以下のようなファイルがあります
--------------------------------------------------------------
Name_Customer Item_Purchased Item_Amount Credit
--------------------------------------------------------------
Tom H1_P 7657 N/A
Pras Track_1 23 N/A
Cha Brace 9 N/A
Moh kite37 269 N/A
Prab Bols 87699 N/A
ファイルのヘッダーを無視してItem_Amount
列の下に値を追加し、合計を次のように出力する必要があります
Total Amount collected = 95657
awk '{s+=$3}END{print s}' yourfile
awk
だけを使用すると、かなり簡単です。サンプルデータがファイルex.txt
:
$ awk '{total = total + int($3)}END{print "Total Amount collected = "total}' ex.txt
$ awk '{total = total + $3}END{print "Total Amount collected = "total}' ex.txt
Total Amount collected = 95657
awk
を使用して、3番目の列($3
)とそれらの小計を変数total
に累積します。完了したら、最後に行うこととして、END{..}
、変数total
の値とともにメッセージを出力します。
total=0;
for n in $( tail -n +4 /tmp/reports.txt | awk '{print $3}') ;
do
total=$( expr $total + $n );
done ;
echo ">>$total"
awk
アプローチがおそらく最も簡単です。その他の選択肢は次のとおりです。
Perl:
Perl -lane '$k+=$F[2];END{print $k}' foo.txt
純粋なcoreutils:
t=0; tail -n +4 foo.txt | tr -s ' ' '\t' | cut -d $'\t' -f 3 |
while read i; do let t+=$i; echo $t; done | tail -n 1
それが役立つ場合:
grep -Eo '[0-9\.]+' your_file|tr '\n' '+'|sed 's/\+$//'|bc -l
このパイプラインは作業を行う必要があります:
tail -n +4 the_file | awk '{ sum += $3 } END { printf "Total Amount collected = %d\n", sum }'