特定の列で特定の値を持つ行をフィルタリングする方法について質問しました。
今、特定の列から特定の値を持つ行を削除したいと思います。どうすればいいですか?
たとえば、表示され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