반응형

awk 응용하기!



awk '{if ($1 ~ ">gga" || $1 ~ ">tgu") {print $1 ; getline ; print}}' mature.fa > mature.others.fa


줄의 시작이 ">gga" 또는 ">tgu"로 시작하는 줄에서 $1를 프린트 하고 라인을 읽고 전체 줄을 프린트한다.


mature.fa 파일은 mirbase에서 다운로드 받은 것으로 전체 종의 대한 mature miRNA sequence가 전부 포함되어 있다.


mirdeep2에서 유사종의 mature miRNA sequence만 가져오고 싶으며 또한 sequence id에 추가 설명 없이 1번 column만 포함되어야 하므로 위와 같은 코드를 구성하였다.







fasta 파일에서 contig 별로 sequence 가져오기.


contig의 형식은 아래와 같았다.


>Contig1

sequence


>로 시작하는 id는 substr를 사용해 숫자 부분만 가져오고 >로 시작하지 않으면 이전에 정한 id 변수 이름에 write.


awk '{if ($1 ~ ">") id = substr($1,8)} {print >> "jelly.out.break.fasta."id".txt"}' ../break/jelly.out.break.fasta


필요에따라 id를 변수로 지정하는 부분만 바꿔주면 될듯 하다.




fasta 파일에서 "|" 와 "_"로 이어져있는 id를 쪼개기.


awk '{if ($1 ~ ">") {split($1,tmpid,"|");split(tmpid[1],id,"_");print ">"id[2] >> "knd1.fa"} else {print >> "knd1.fa"}}' consensus_ngmlr.fasta


반응형

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

neocomplcache vim plugin 설치하기  (0) 2018.07.12
samba 설정하기  (0) 2018.02.02
MPC 설치하기  (0) 2017.09.19
MPFR 설치하기  (0) 2017.09.19
GMP 설치하기  (1) 2017.09.19
반응형



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


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




  • 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