Bash 如何使用awk计算特定列中的指定位数

Bash 如何使用awk计算特定列中的指定位数,bash,csv,gawk,awk,Bash,Csv,Gawk,Awk,如何计算特定列中的匹配值 我有一个文件:(wm.csv) 我执行命令以获取特定列中的目标值:tail-n+497wm.csv | awk-F“,“$2==”2“{print$3”“$4}” 然后我得到我想要的以下输出数据: 打2 打2 打2 打2 错过 打2 打2 打2 打2 打2 打2 打2 错误1 打2 打2 打2 我想数一数第二列中“2”的数目,以便做一些简单的数学运算,比如:列中的总位数除以行的总数。具体来说,在本例中,它看起来像:14(第二列中的十四个“2”)/16(行总数) 以下

如何计算特定列中的匹配值

我有一个文件:(wm.csv)

我执行命令以获取特定列中的目标值:
tail-n+497wm.csv | awk-F“,“$2==”2“{print$3”“$4}”

然后我得到我想要的以下输出数据:


打2
打2
打2
打2
错过
打2
打2
打2
打2
打2
打2
打2
错误1
打2
打2
打2

我想数一数第二列中“2”的数目,以便做一些简单的数学运算,比如:列中的总位数除以行的总数。具体来说,在本例中,它看起来像:14(第二列中的十四个“2”)/16(行总数)

以下是我尝试过的命令,但无效:
tail-n+497wm.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 '$2==2{c++} END{print NR,c,c/NR}' file

16 14 0.875
我使用
~
比较整行($0)与“命中2”的匹配,如果它是增加计数器1
FNR
是记录的文件编号,它是总行号


我使用
~
比较整行($0)与“命中2”的匹配,如果它是增加计数器1
FNR
是记录的文件编号,它是总行号。

显示它应该如何打印最终结果,包括总计算显示它应该如何打印最终结果,包括总计算这将匹配例如
non hit 22
@JamesBrown您是对的。这取决于真实的台词,我的帖子只针对发布的样本OP。如果是这种情况,
awk-F'($2==“2”)”…
这将匹配例如
non-hit 22
@JamesBrown,你是对的。这取决于真实的台词,我的帖子只针对发布的样本OP。如果是这样的话,
awk-F'($2==“2”)'…