[英]How to use awk counting the number of specificed digit in certain column
如何计算特定列中的匹配值?
我有一个文件:(wm.csv)
我执行了命令以在某些列中获取目标值: tail -n +497 wm.csv | awk -F"," '$2=="2" {print $3" "$4}'
tail -n +497 wm.csv | awk -F"," '$2=="2" {print $3" "$4}'
然后得到以下所需的输出数据:
hit 2 hit 2 hit 2 hit 2 miss hit 2 hit 2 hit 2 hit 2 hit 2 hit 2 hit 2 incorrect 1 hit 2 hit 2 hit 2
我想计算第二列中的“ 2”数,以便进行简单的数学运算,例如:列中的总位数除以行的总数。 具体来说,在这种情况下,它看起来像是: 14 (第二列中有十四个“ 2”) / 16 (行总数)
以下是我尝试过的命令,但这不起作用: tail -n +497 wm.csv | awk -F"," '$2=="2" {count=0;} { if ($4 == "2") count+=1 } {print $3,$4,$count }'
tail -n +497 wm.csv | awk -F"," '$2=="2" {count=0;} { if ($4 == "2") count+=1 } {print $3,$4,$count }'
谢谢
将过帐的数据作为输入文件
$ awk '$2==2{c++} END{print NR,c,c/NR}' file
16 14 0.875
awk '($0 ~ "hit 2"){count += 1} END{print count, FNR, count/FNR}' sample.csv
14 16 0.875
我用~
比较整行($ 0)匹配“ hit 2”,如果它是将计数器加FNR
是记录的文件号,即总行号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.