我想添加每行的所有第3个字段并生成结果。
以下是解决问题的方法
sum=0
grep '2016Feb' input.txt|awk -F\- '{print $3}'|while read LINE; do
sum = $(expr $sum + $LINE)
done
echo $sum
有没有比我的代码更好的解决问题的方法?可能是一个解决问题@命令行本身的命令?
对于像
这样的文件$ cat input.txt
Feb2016-2016-110
Feb2016-2016-20
Feb2016-2016-220
Feb2016-2016-140
Feb2016-2016-100
输出为:590
。
答案 0 :(得分:2)
只需将字段分隔符设置为短划线并将第三列相加:
$ awk -F- '{sum+=$3} END{print sum+0}' file
590 ^^
# in case there are no matching lines, print 0
由于您只是计算包含文本" Feb2016"的那些行,您还可以添加过滤器:
awk -F- '/Feb2016/{sum+=$3} END{print sum+0}' file
# ^^^^^^^^^
# just on lines containing the string "Feb2016"
答案 1 :(得分:1)
$ cat data
Feb2016-2016-110
Feb2016-2016-20
Feb2016-2016-220
Feb2016-2016-140
Feb2016-2016-100
$ cut -d - -f 3 data | paste -s -d '+' | bc
590
$