awk コマンドを使用して vcf.gz ファイルから行を削除します。

awk コマンドを使用して vcf.gz ファイルから行を削除します。

特定の列で特定の値を持つ行をフィルタリングする方法について質問しました。

今、特定の列から特定の値を持つ行を削除したいと思います。どうすればいいですか?

たとえば、表示され1/1た列の12345行を削除し、file.vcf.gz残りの行をnewfile.vcf.gz

例えば

#CHROM      POS         ALT     12345   
1           345632      T       0/1:4,4:8:99:105,0,106
4           032184      C       1/1:46,9:55:99:99,0,1222
6           843290      A       0/1:67,20:87:99:336,0,1641

予想される結果:

1           345632      T       0/1:4,4:8:99:105,0,106
6           843290      A       0/1:67,20:87:99:336,0,1641

ベストアンサー1

これは最後の質問と正反対ですが

この一つ。

zcat file.vcf.gz | awk '$4 !~ /^1\/1/' | gzip -c > new.vcf.gz

!$ 4がパターンでない場合は一致します。ただし、ヘッダー行は削除されません。ヘッダー行を削除するには、パイプラインに追加するだけですhead -n +2

zcat file.vcf.gz | head -n +2 |awk '$4 !~ /^1\/1/' | gzip -c > new.vcf.gz

おすすめ記事