對於不同批次檢出出的水果數量累加
cat a.txt
蘋果 Apple 10
梨 pear 8
檸檬 lemon 4
梨 pear 8
桃子 peach 11
梨 pear 10
蘋果 Apple 8
梨 pear 8
梨 pear 2
桃子 peach 18
梨 pear 1
桔子 orange 5
1)首先對文本進行排序,按第一列名稱進行排序
sort -k 1,1 a.txt > b.txt
cat b.txt
梨 pear 1
梨 pear 10
梨 pear 2
梨 pear 8
梨 pear 8
梨 pear 8
檸檬 lemon 4
桃子 peach 11
桃子 peach 18
桔子 orange 5
蘋果 Apple 10
蘋果 Apple 8
2)利用awk對相同名稱的水果數量進行累加
awk 'BEGIN{sum=0}NR==1{name=$1;english_name=$2;sum+=$3}NR>1{if($1 == name) {sum+=$3;}else {print name,english_name,sum;name=$1;english_name=$2;sum=$3}} END{print name,english_name,sum}' b.txt
梨 pear 37
檸檬 lemon 4
桃子 peach 29
桔子 orange 5
蘋果 Apple 18
解析:首先在BEGIN中對sum初始化;判斷如果是第一行的記錄,就把name,english_name以及sum賦值;
如果是大於1的行,那麼就根據name進行對比,如果與上一條記錄的name相等,就將數量累加到sum上,否則就輸出記錄,對變量重新賦值,sum初始化爲當前記錄的數量。
最後在END中輸出最後累加記錄的結果。搞定