shell - 如何将 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
解决方案
您不需要循环,只需zcat
and 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
}
推荐阅读
- ajax - 我在 django 中对这个 AJAX 做错了什么?
- angular - rxjs-5-to-6 “找不到任何可能的迁移”
- python - Python 运行所需的最少文件/库是什么?
- android - 当我尝试从服务器获取图像时出现 IndexOutOfBoundsException
- firebase - Firebase 功能触发两次
- javascript - 如何在新状态道具中访问其他状态/属性值
- android - 如何使用 tonyodev.fetch2 显示通知
- category-theory - 将“最佳”产品类型映射到“次优”产品类型的独特态射“m”真的是独一无二的吗?
- python - 如何检查方程中运算符的顺序是否正确?
- powershell - 日志文件显示为空