반응형



리눅스에서 문서형식으로 된 데이터 파일들을 처리하다 보면 문서 편집 기능이 필요할 때가 많다.


일일이 스크립트를 짜서 하기엔 너무 번거로우니 간단하게 한 줄로 처리하고 싶을 때 자주 사용하게 되는 명령어들을 정리해 보았다.




  • grep

grep options(s) pattern filename(s)

pattern을 이용한 검색에 사용한다.

주로 특정 패턴이 있는 줄을 출력하거나, 개수를 세거나, 특정 패턴이 없는 줄을 찾거나 등에 사용한다.


예시.

grep 'pattern' filename                 # 패턴이 있는 라인 출력

grep -v 'pattern' filename             # 패턴이 없는 라인 출력

grep -c 'pattern' filename             # 패턴이 있는 라인 수 출력

grep -i 'pattern' filename              # 패턴의 대소문자 구분 없이 

좀 더 정확하게 검색하고 싶다면 regular expression을 사용할 수도 있다.

grep '^pattern' filename                # 패턴이 라인의 시작 부분에서 등장하는 라인만 찾기

grep 'a...d' filename                    # a와d사이에 문자가 3개 포함되는 패턴을 찾기


grep은 사용하는 법도 간단하지만, 여러 가지 조건을 걸고 보기에는 무리가 있어서 다른 유닉스 명령어와 혼합하여 사용하는 경우가 많다.



  • sed

sed [-options] [address] command file... [> newfile]


file을 열지 않고 data를 편집가능하게 해주는 명령어 이다. 


stdout으로 바로 출력되기 때문에 원본 파일은 변화가 없으며 파일로 새로 쓰고 싶으면 stdout을 바로 파일로 만들어주면 된다.


예시.


sed '/pattern/d' filename                                    # 패턴이 있는 라인 삭제


sed -n '/pattern/p' filename                                # 패턴이 있는 라인 만 출력


sed 's/pattern1/pattern2/g' filename                       # 패턴1을 패턴 2로 바꿈


패턴 뒤에 나오는 d, p, g 등이 어떤 기능을 수행할 지 결정하며 그 외의 특별히 기억해야 할 명령어는 없다.



  • awk

awk '{action}' filename

좀 더 복잡한 조건을 수행하고 싶을때 사용한다. 

예시.

awk '{print $1}' filename                  # 1번 필드만 출력

awk '{if ( $1 > 10 ) print $1}'             # 1번 필드가 10보다 클 때 1번 필드를 출력

awk '{if ( $1 > 10 ) count += 1 } END { print "count : " count }'  # 1번 필드가 10보다 클 때 count를 하나씩 올리고, 파일이 끝난 후 count를 출력

awk '{print > $3".txt"}' inputfile.txt        # inputfile의 3번 column에 있는 이름에 ".txt" 를 붙여서 stdout으로 나오는 출력을 해당 파일로 쓰기


익숙해지면 따로 스크립트를 작성하지 않아도 간단하고 빠르게 문서 편집이 가능하다.



특히나 리눅스에서는 문서 편집 명령어들을 쓸 일이 많기 때문에 쓰다보면 자연스럽게 익숙해질 것이다.



반응형

'Computer Science > linux' 카테고리의 다른 글

GCC 설치하기  (1) 2017.09.18
cURL 로컬 설치하기  (0) 2017.08.24
Repeatmasker 설치  (0) 2017.05.05
GBrowse2 설치하기  (0) 2017.04.25
Perl 설치 및 실행하기  (0) 2017.04.25

+ Recent posts