Shell脚本添加列值

时间:2014-11-25 13:04:42

标签: shell unix awk

我有一个文本文件,其中包含如下内容:

{"userId":"f1fcab","count":"3","type":"Stack"}
{"userId":"fcab","count":"2","type":"Stack"}
{"userId":"abcd","count":"5","type":"Stack"}

我想得到计数值的总和 我正在使用awk来实现这一点,如下所示:

$ awk -F "," '{print $4}' test.txt    

如何使用awk只获取整数类型并将它们全部添加。

我的脚本应该给我

sum=10

4 个答案:

答案 0 :(得分:2)

您可以尝试下面的内容,

$ awk -F'"' '{sum = sum + $8;}END{print "sum="sum+0}' file
sum=10
  • -F'"'将双引号设置为FS值。 Awk根据FS变量的值将行拆分为colunms。
  • sum = sum + $8计算第8列中所有值的总和,并将其存储到名为sum
  • 的变量中
  • 最后,通过在末尾打印变量sum,将为您提供所需的输出。

答案 1 :(得分:2)

您可以使用双引号(count)作为分隔符获取"键的值,以便第八列将是count上的值:

$ awk -F"\"" 'BEGIN {sum=0} {sum+=$8} END {print sum}' fd
10

答案 2 :(得分:1)

假设一致使用双引号字符,您可以使用:

awk -F\" '{s += $8} END{print "sum=" s+0}' inputFile

这将产生:

sum=10

这是有效的,因为引号分隔符为您提供了字段:

1 2      3 4      5 6     7 8 ...
{"userId":"f1fcab","count":"3","type":"Stack"}

答案 3 :(得分:1)

awk -F'[:"]' '{sum+=$10} END{print "sum=" sum}' File

':''''设置为分隔符。然后取第10个字段,即计数值。然后添加总和并打印到最后

示例:

sdlcb@ubuntu:~/AMD_C/SO$ cat File
{"userId":"f1fcab","count":"3","type":"Stack"}
{"userId":"fcab","count":"2","type":"Stack"}
{"userId":"abcd","count":"5","type":"Stack"}
sdlcb@ubuntu:~/AMD_C/SO$ awk -F'[:"]' '{sum+=$10} END{print "sum=" sum}' File
sum=10