0

我有以下输入数据:

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
4

1 回答 1

4

因为您最后只打印出一次差异,这意味着除了最后一行之外的所有内容都被有效地丢弃。(当整个输入被读取和处理END后,该块只运行一次)你想要这个:

awk 'NF > 0 { print $1 "\t" ($3 - $2) }' input.txt

NF > 0防止 awk 为空行打印无意义的 0 。

于 2009-02-19T06:15:06.730 回答