搜索字符串,如果匹配则添加

时间:2010-05-04 17:00:50

标签: bash scripting awk

我的文件有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 ...

我这样写了我的剧本,但是我得不到正确的结果

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

Pure Bash:

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