awkコマンドを使用して特定の列値を持つ行を抽出する

awkコマンドを使用して特定の列値を持つ行を抽出する

1/1で始まるすべての行を抽出したい「12345」列からそして、awkコマンドを使用してこの行を新しいファイル(-> Newfile.vcf.gz)に入れ、最初のfile.vcf.gzを変更しないでください。私のファイルはfile.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

予想される結果

4           032184      C       1/1:46,9:55:99:99,0,1222

ベストアンサー1

awkでは正規表現を使用できます。/^1\/1/列4が次から始まると一致します1/1

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

しかし、/4列にしか現れない場合は、ただ使用すればいいのでしょうかgrep

zgrep "1/1" file.vcf.gz | gzip  -c > new.vcf.gz

おすすめ記事