首页 > 解决方案 > 如何将 awk 与循环结合使用

问题描述

我正在使用 awk 在文件的第 1 列中分别选择包含 1 到 18 的行。我使用命令行如下,我的输出文件中什么也没有。所以有人知道我怎么能修改我的命令行?先感谢您!

for k in `seq 1 18`; do zcat qc.vcf.gz | grep -v "^#" | awk '{if($1==$k) print$0}' > test${k}; done

标签: shellawk

解决方案


您不需要循环,只需zcatand awk

zcat qc.vcf.gz | awk '!/^#/{f="test"$1; print > f; close(f)}'

awk 命令解释:

!/^#/ {
    f = "test"n     # The (f)ilename of the output file
    print >> f       # Print current line to output file
    close(f)        # Close output file
}

推荐阅读