我有一个文本文件,其中包含如下内容:
{"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
答案 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