1

私はいくつかのテキストファイルを持っています。各ファイルの 2 列目と 4 列目の間で減算を行う必要があります。減算された値は、元のファイルの 5 列目に出力されます。awkまたはsedでこれを行うにはどうすればよいですか?

HII 62.0    HII 35.1
MEE 21.3    MEE 21.3
GLL 42.3    GLL 18.5
ASS 105.9   ASS 105.9
RRG 65.6
GLL 48.3
SES 83.5    

Desired output

HII 62.0    HII 35.1   26.9
MEE 21.3    MEE 21.3    0
GLL 42.3    GLL 18.5   23.8
ASS 105.9   ASS 105.9   0
RRG 65.6
GLL 48.3
SES 83.5

3 列目と 4 列目が空白の場合は、減算する必要はありません。

4

2 に答える 2

5
awk 'NF == 2 { print }
     NF == 4 { print $0, $2 - $4 }'

それはすべて1つの線に合わせることができますが、2つの線にまたがると、それが何をしているのかが明確になります。

フォーマットをより細かく制御したい場合は、のprintf()代わりにを使用できますprint

データの末尾のスペースをサニタイズした後、次のようになります。

HII 62.0    HII 35.1 26.9
MEE 21.3    MEE 21.3 0
GLL 42.3    GLL 18.5 23.8
ASS 105.9   ASS 105.9 0
RRG 65.6
GLL 48.3
SES 83.5
于 2012-10-05T05:06:14.863 に答える
1

これはあなたのために働くかもしれません(GNU sed&Bash):

sed -ri '/^\S+\s+(\S+)\s+\S+\s+(\S+)/s//echo "&\t$(echo \1-\2|bc)"/e' file
于 2012-10-05T05:47:25.847 に答える