0

次の入力データがあります。

AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG      44      40.000
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC      35      37.000
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT      13      13.000

私がやりたいことは、列 3 を列 2 で減算することです。

AATGCCACGTTGAGAGGCGTTCGCGGAAGGCGCG      -4
AATGCCACTCGGGTCCGAGATGGCGGATCTCCAC      2
AATGCCAGAGCTGTGGTAGTGTGAAAGCAGCAGT      0

しかし、この awk が機能しない理由:

 $ awk '{dif =($3 - $2)}END{print dif}' input.txt
4

1 に答える 1

4

最後に違いを 1 回だけ出力するため、最後の行以外のすべてが事実上破棄されます。(ブロックは、入力全体ENDが読み取られて処理されたときに 1 回だけ実行されます) 代わりに、次のようにします。

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

NF > 0awk が空の行に無意味な 0 を出力するのを防ぎます。

于 2009-02-19T06:15:06.730 に答える