列之间相减并使用 AWK 打印
我有以下输入数据:
AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG 44 40.000
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC 35 37.000
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT 13 13.000
我想要做的是用第 2 列减去第 3 列 :
AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG -4
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC 2
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT 0
但为什么这个 awk 不起作用
$ awk '{dif =($3 - $2)}END{print dif}' input.txt
I have a following input data:
AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG 44 40.000
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC 35 37.000
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT 13 13.000
What I want to do is to substract column 3 by column 2
yielding:
AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG -4
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC 2
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT 0
But why this awk doesnt' work:
$ awk '{dif =($3 - $2)}END{print dif}' input.txt
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为您只在最后打印出一次差异,这意味着除了最后一行之外的所有内容都被有效地丢弃。 (
END
块仅在读取并处理整个 输入时运行一次)您需要这样:NF > 0
防止 awk 为空行打印无意义的 0。Because you only print out the difference once, at the end, which means everything but the last row is effectively discarded. (The
END
block runs only once, when the entire input has been read and processed) You want this instead:The
NF > 0
prevents awk from printing meaningless 0s for empty lines.