탭으로 구분된 열에서 특정 행을 잘라내는 방법은 무엇입니까?

탭으로 구분된 열에서 특정 행을 잘라내는 방법은 무엇입니까?

탭으로 구분된 9개의 열이 있는 파일(.gff3)이 있습니다.

##gff-version 3
##other information
0 . mRNA            1300  9000  .  +  .  ID=mrna0001;Name=sonichedgehog
1 . exon            1300  1500  .  +  .  ID=exon00001;Parent=mrna0001
2 . exon            1050  1500  .  +  .  ID=exon00002;Parent=mrna0001
3 . exon            3000  3902  .  +  .  ID=exon00003;Parent=mrna0001
4 . exon            5000  5500  .  +  .  ID=exon00004;Parent=mrna0001
5 . exon            7000  9000  .  +  .  ID=exon00005;Parent=mrna0001

첫 번째 열이 숫자 5로 시작하는 9개 열 모두에서 모든 정보를 얻으려고 합니다. 내 파일 크기는 약 450MB입니다.

따라서 저는 1~9열의 모든 정보에서 이 정보를 얻고 싶습니다.

5 . exon            1300  1500  .  +  .  ID=exon00001;Parent=mrna0001
5 . exon            1050  1500  .  +  .  ID=exon00002;Parent=mrna0001
5 . exon            3000  3902  .  +  .  ID=exon00003;Parent=mrna0001
5 . exon            5000  5500  .  +  .  ID=exon00004;Parent=mrna0001
5 . exon            7000  9000  .  +  .  ID=exon00005;Parent=mrna0001

나는 열심히 노력했다

grep '5' [FILE].gff3 >[NEWFILE].txt
cut -d'5' -f1-9 [FILE].gff3

이들 각각은 내 파일을 제공하지만 숫자 5로 시작하는 열 1에는 정보가 없습니다. 그래서 그것은 내가 얻고 싶은 것과 반대되는 일을 합니다.

답변1

염색체 5에 대한 모든 데이터를 추출하려면 다음과 같은 간단한 명령을 사용할 수 있습니다 awk.

awk -F '\t' '$1 == "5"' file.gff3 >chr5.gff3

GFF 헤더도 포함됩니다:

awk -F '\t' '/^#/ || $1 == "5"' file.gff3 >chr5.gff5

이들 명령 중 하나는 추출된 데이터를 읽고 file.gff3새 파일에 기록합니다 chr5.gff3.

엑손만 포함하도록 쉽게 확장할 수 있습니다.

awk -F '\t' '/^#/ || ($1 == "5" && $3 == "exon")' file.gff3 >chr5.gff5

관련 정보