次のファイルがあります。
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
一致させる遺伝子を1行に1つずつファイルに入れます。それからgrep呼び出しだけです。
grep -Fwf genes.txt Book3.txt
タイトルを維持するには:
{ head -n1 Book3.txt; grep -Fwf genes.txt Book3.txt; }
グレブオプション:
-F
「固定文字列」 - 正規表現を無効にし、部分文字列一致のみを検索します。-w
「単語一致」 - 単語全体に一致する項目のみを検索します。-f file
- パターンを含むファイルの指定(1行に1つ)
サンプルデータの使用
$ 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