Unix 在列之间减去并用AWK打印

Unix 在列之间减去并用AWK打印,unix,awk,Unix,Awk,我有以下输入数据: AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG 44 40.000 AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC 35 37.000 AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT 13 13.000 我要做的是用第2列减去第3列 屈服: AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG -4 AATGCCACTCGG

我有以下输入数据:

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

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

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

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

因为您只在末尾打印一次差值,这意味着除了最后一行之外的所有内容都将被有效地丢弃。(当整个输入被读取和处理后,
END
块只运行一次)您希望这样做:

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

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

嘿,等一下,那是我的DNA副本(我识别第二行的“cgagatgggg”位)。你从哪里得到的?你父母没告诉过你是根据开放式dna序列许可证发布的吗?嘿,等一下,那是我的dna副本(我知道第二行的“cgagatgg”位)。你是从哪里弄来的?你父母没告诉你是根据开放dna序列许可证释放的吗?