基于第1列(小时值)的第2列的总和,我有一个文件第1个库是小时,第2个库是计数。 我根据小时库存计算总数,
Input
01:01,15
01:02,16
01:03,6
02:01,44
02:02,33
02:05,22
14:01,55
14:02,06
Output:
01,37
02,99
14,61
我能够通过以下步骤创建所需的输出。
创建唯一的小时文件,下面是示例代码, 而IFS =":"读f1 f2 做
if [ $f1 -eq 01 ]
then
echo $f1":",$f2 >> convertedFile01
fi
然后从转换后的文件中,我将列值相加。但是这个过程会生成24个转换后的文件,有没有办法以简单的方式生成预期的输出?
答案 0 :(得分:4)
这一个班轮应该做:
awk -F'[,:]' '{a[$1]+=$3}END{for(x in a)print x","a[x]}' file
答案 1 :(得分:2)
保存在数组中,在末尾打印
awk -F'[:,]' '{a[$1]+=$3}END{for(i in a) print i","a[i]}' file
解释
-F'[:,]' - Sets field separator to either a : or ,
{a[$1]+=$3} - For each line store the value of the third field in an associative array
with the value in the first field as a key
END{for(i in a) print i","a[i]} - At the end of the file, for each item in
the array, print the key and the value for that key