2017-01-30 22 views
0

今天我有一個腳本,它內部有一個查詢,它執行SELECT列名和它的計數。它可以列出超過50多個不同的行。使用參數在AIX上求和的整數

Ex。

BOOK 12 
SHELF 2 
DESK 3 

大綱代碼:

[query] | while read unk_mtype_volume ; do 

    echo "$unk_mtype_volume" 

done 

我需要總結的每一行號,有一個總。

回答

2

這是一個簡單的工作awk,不需要昂貴的迭代文件/輸入所需的行。只需添加了第二場,最後打印出值:

awk '{sum+=$2} END{print sum}' file.txt 

如果輸入是從標準輸入來:

... | awk '{sum+=$2} END{print sum}' 

例子:

% cat file.txt 
BOOK 12 
SHELF 2 
DESK 3 

% awk '{sum+=$2} END{print sum}' file.txt 
17 
0

你可以(而且我會)使用awk作爲工作 - 如heemaylanswer中所示。你也可以在純Bash中做到這一點:

sum=0 
while read location number 
do 
    sum=$(($sum + $number)) 
done 
echo "Total: $sum" 

請注意,如果任何'位置'包含多個單詞,這是脆弱的。你可以在awk以上比Bash更容易編碼。