다음과 같은 파일이 있습니다.
Chr Start End Ref Alt Func.refGene Gene.refGene ExonicFunc.refGene AAChange.refGene Func.knownGene Gene.knownGene
1 53387379 53387379 G C UTR5 ECHDC2 NA NA UTR5 ECHDC2(FFF)
1 53387380 53387380 G C UTR5 C2(hhh) NA NA UTR5 C2(FFF)
1 1647814 1647814 T C exonic CDK11A,CDK11B synonymous SNV NA exonic CDK11A,CDK11B
1 1647814 1647814 T C exonic CDK11A23,CDK11B23 synonymous SNV NA exonic CDK11A23,CDK11B23
1 1670958 1670958 C G exonic SLC35E2A synonymous SNV NA exonic SLC35E2
1 1684347 1684347 - CCT exonic NADK nonframeshift insertion NA exonic NADK
1 7069620 7069620 T C intronic PTPN6(ggg),IL3 NA NA intronic PTPN6(ggg),IL3
유전자 "C2", "CDK11A" 및 "IL3"을 포함하는 모든 라인을 출력하고 싶습니다. 분명히 더 큰 파일과 더 긴 유전자 세트를 가지고 있지만 이는 편의를 위한 작은 예일 뿐입니다.
나는 다음 스크립트를 사용하고 있습니다.
tail -n+1 Book3.txt | awk -F'\t' 'BEGIN{OFS=FS}{if(NR==1 || $7=="C2" || $7~/C2[(]/ || $7~/C2/ || $11=="C2" || $11~/C2[(]/ || $11~/C2/ ||
$7=="CDK11A" || $7~/CDK11A[(]/ || $7~/CDK11A/ || $11=="CDK11A" || $11~/CDK11A[(]/ || $11~/CDK11A/ ||
$7=="IL3" || $7~/IL3[(]/ || $7~/IL3/ || $11=="IL3" || $11~/IL3[(]/ || $11~/IL3/) {print($0)}}' > Book3.genes.txt
스크립트는 다음과 같이 불필요한 줄을 출력합니다.
Chr Start End Ref Alt Func.refGene Gene.refGene ExonicFunc.refGene AAChange.refGene Func.knownGene Gene.knownGene
1 53387379 53387379 G C UTR5 ECHDC2 NA NA UTR5 ECHDC2(FFF)
1 53387380 53387380 G C UTR5 C2(hhh) NA NA UTR5 C2(FFF)
1 1647814 1647814 T C exonic CDK11A,CDK11B synonymous SNV NA exonic CDK11A,CDK11B
1 1647814 1647814 T C exonic CDK11A23,CDK11B23 synonymous SNV NA exonic CDK11A23,CDK11B23
1 7069620 7069620 T C intronic PTPN6(ggg),IL3 NA NA intronic PTPN6(ggg),IL3
2행과 5행은 필요하지 않습니다. 출력에 주어진 유전자 목록만 포함하도록 스크립트를 어떻게 수정합니까?
답변1
일치시키려는 유전자를 한 줄에 하나씩 파일에 넣으십시오. 그런 다음 grep 호출일 뿐입니다.
grep -Fwf genes.txt Book3.txt
제목을 유지하려면:
{ head -n1 Book3.txt; grep -Fwf genes.txt Book3.txt; }
그렙 옵션:
-F
"고정 문자열" - 정규식을 비활성화하고 하위 문자열 일치만 찾습니다.-w
"단어 일치" - 전체 단어와 일치하는 항목만 찾습니다.-f file
-- 패턴이 포함된 파일 지정(한 줄에 하나씩)
샘플 데이터 사용
$ cat genes.txt
C2
CDK11A
IL3
$ { head -n1 Book3.txt; grep -Fwf genes.txt Book3.txt; }
Chr Start End Ref Alt Func.refGene Gene.refGene ExonicFunc.refGene AAChange.refGene Func.knownGene Gene.knownGene
1 53387380 53387380 G C UTR5 C2(hhh) NA NA UTR5 C2(FFF)
1 1647814 1647814 T C exonic CDK11A,CDK11B synonymous SNV NA exonic CDK11A,CDK11B
1 7069620 7069620 T C intronic PTPN6(ggg),IL3 NA NA intronic PTPN6(ggg),IL3