4

col2 の合計を取り、最後のレコードの最後の列に値を追加する必要があります。UNIXシェルスクリプトを使用してこれを達成する方法を教えてください。

E.g Input file:
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   null

Output file
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9
4

3 に答える 3

1

出力に空白を保持したい場合:

$ awk '{sum+=$2; s=s $0 ORS} END{ sub("null"ORS"$",sum,s); print s}' file
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9

また:

$ awk '{sum+=$2; printf "%s",p} {p=$0 ORS} END{ sub("null$",sum); print}' file
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9
于 2012-10-31T21:31:42.993 に答える
0

使用する1つの方法は次のGNU awkとおりです。

awk -v last="$(wc -l < file.txt)" 'NR == 1 { print; next } { sum += $2 } NR == last { sub($NF, sum) }1' file.txt

結果:

Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9
于 2012-10-31T22:43:18.023 に答える
0

このawkスクリプトはそれを行うと思います:

awk '{sum+=$2; if (NR != 4) print; } END {$4=sum; print;}' infile

編集:またはさらに良い:

awk '{sum+=$2; if (NR>1) print x; x=$0} END {$4=sum; print $0;}' infile
于 2012-10-31T20:48:52.070 に答える