2010-05-04 61 views
2

我有了2列,下面給出一個文件....搜索字符串,並添加如果匹配

101 6 
102 23 
103 45 
109 36 
101 42 
108 21 
102 24 
109 67 

等等......

我想編寫一個腳本,它們對應的第一列匹配

for example add all 2nd column values if it's 1st column is 101 
add all 2nd column values if it's 1st colummn is 102 
add all 2nd column values if it's 1st colummn is 103 and so on ... 

我寫我的劇本是這樣,從第2列增加值,但我沒有得到正確的結果

awk '{print $1}' data.txt > col1.txt 
while read line 
do 
    awk ' if [$1 == $line] sum+=$2; END {print "Sum for time stamp", $line"=", sum}; sum=0' data.txt 
    done < col1.txt 

回答

3
awk '{array[$1]+=$2} END { for (i in array) {print "Sum for time stamp",i,"=", array[i]}}' data.txt 
3

純擊:

declare -a sum 
while read -a line ; do 
    ((sum[${line[0]}] += line[1])) 
done < "$infile" 

for index in ${!sum[@]}; do 
    echo -e "$index ${sum[$index]}" 
done 

輸出:

101 48 
102 47 
103 45 
108 21 
109 103