使用 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

相关内容