- 명령라인 인터페이스의 강력함을 살펴본다.
- 유닉스 명령라인 인터페이스를 통해 데이터 분석을 실시한다.
저작권 걱정없이 저작물을 받을 수 있는 경로는 여러 곳이 존재한다. 하지만, PDF, HWP, TXT 파일은 압축하여 제공하고 있어 사람손이 몇번씩 가는 문제점이 있다. 작업과정에 추가로 프로세스를 넣어주어야만 된다. 어차치 TXT로 작업하는데 …
결국에 모두 실패하고, 직지(http://www.jikji.org/)에서 수작업으로 .txt
파일을 생성하여 .txt
파일을 웹에 올려 curl
명령어를 통해 바로 다운로드 받게 소설데이터를 준비했다. 소설 데이터는 B사감과 러브레터 라 고등학교 인문계에서 필독서로 아주 오래전에 읽었던 기억이 난다. 영화로도 만들어지고, TV에서도 방영되었던 것으로 기억된다.
curl
명령어를 통해 https://raw.githubusercontent.com/statkclee/ml/gh-pages/data/B사감과_러브레터.txt 파일을 다운로드 한다.grep
명령어로 정규표현식 패턴을 넣어 단어를 각 행별로 추출하여 쭉 정리해 나간다.sort
명령어로 오름차순으로 정리한다.unique
명령어로 중복을 제거하고 -c
인자플래그를 넣어 중복수를 센다.sort
명령어로 단어갯수를 내림차순으로 정리한다.head
명령어로 가장 빈도가 높은 단어 5개를 추출한다.$ curl -s https://raw.githubusercontent.com/statkclee/ml/gh-pages/data/B%EC%82%AC%EA%B0%90%EA%B3%BC_%EB%9F%AC%EB%B8%8C%EB%A0%88%ED%84%B0.txt | \
grep -oE '\w+' | \
sort | \
uniq -c | \
sort -nr | \
head -n 5
138 처음
132 직지에
65 러브레터
47 때
26 여학교에서
만약 두도시 이야기(A Tale of Two Cities)에서 가장 많은 단어를 분석하고자 하는 경우 http://www.gutenberg.org/cache/epub/98/pg98.txt을 인자로 바꿔 넣으면 된다.
명령라인 인터페이스를 사용하면, 애자일(Agile), 다른 기술과 증강(Augmenting)이 가능하며, 확장성(Scalable)이 크며, 연장가능(Extensible)하며, 어디서나 사용(Ubiquitous)되는 장점을 갖는다.
유닉스는 텍스트(Text) 가 어디서나 사용되는 인터페이스로, 각 개별 구성요소는 한가지 작업만 매우 잘 처리하게 설계되었고, 복잡하고 난이도가 있는 작업은 한가지 작업만 잘 처리하는 것을 파이프와 필터 로 자동화하고, 그리고 쉘스크립트 를 통해 추상화한다.
데이터를 가져오는 방식은 결국 텍스트로 유닉스/리눅스 환경으로 불러와야만 된다. csvkit 에 in2csv
, csvcut
, csvlook
, sql2csv
, csvsql
이 포함되어 있다.
sudo pip install csvkit
명령어로 설치한다.
cp
복사, 원격파일 복사: scp
복사tar
, unzip
, unrar
명령어로 압축된 파일을 푼다.
.tar.gz
, .zip
, .rar
unpack
csv
파일로 변환.
$ in2csv ne_1033_data.xlsx | csvcut -c county,item_name,quantity | csvlook | head
sql2csv --db 'sqlite:///iris.db' --query 'SELECT * FROM iris where petal_length > 6.5' | csvlook
curl -s http://www.gutenberg.org/files/13693/13693-t/13693-t.tex -o number-theory.txt
curl -s http://api.randomuser.me | jq '.'
head
, sed
, awk
grep
명령어에 정규표현식으로 패턴을 담아 매칭되는 것만 뽑아낸다.grep -i session paper.txt
shuf
명령어를 사용한다.shuf -n 10 data.csv
기본적인 값추출 전략은 grep
명령어로 행을 뽑아내고, cut
명령어로 구분자를 두거나 고정된 열위치에 해당하는 열에서 값을 추출한다. cut
명령어로 열을 쪼개는데 구분자로 ,
를 사용하고 뽑아내는 열로 -f
인자를 두고 3번째 행이후 모두를 지정한다.
값을 바꾸거나 삭제할 때 사용하는 명령어가 tr
로 translate
번역의 약자다.
공백 을
*
로 바꾼다.