awk找出第二列和第三列等于特定单词的次数
假设我有一个names.txt文件,其中包含以下内容awk找出第二列和第三列等于特定单词的次数,awk,Awk,假设我有一个names.txt文件,其中包含以下内容 Bob Billy Billy Bob Billy Joe Bob Billy Billy Joe Billy Billy 使用awk我想知道$2=Billy和$3=Billy的次数。在这种情况下,我期望的输出是3倍 另外,如果有必要的话,我正在mac电脑上测试这一点。首先需要测试$2==3,然后测试其中一个是否等于Billy。递增一个计数器,然后在末尾打印结果: $ awk '$2==$3 && $2=="Billy"{c
Bob Billy Billy
Bob Billy Joe
Bob Billy Billy
Joe Billy Billy
使用awk我想知道$2=Billy和$3=Billy的次数。在这种情况下,我期望的输出是3倍
另外,如果有必要的话,我正在mac电脑上测试这一点。首先需要测试$2==3,然后测试其中一个是否等于Billy。递增一个计数器,然后在末尾打印结果:
$ awk '$2==$3 && $2=="Billy"{cnt++} END{print cnt+0}' names.txt
3
或者,你几乎可以写下你所说的:
$ awk '$2=="Billy" && $3=="Billy" {cnt++} END{print cnt+0}' names.txt
3
如果要使用变量,不需要多次键入:
$ awk -v name='Billy' '$2==name && $3==name {cnt++}
END{printf "Found \"%s\" %d times\n", name, cnt+0}' names.txt
Found "Billy" 3 times
或者,您可以收集所有信息并报告发现的内容:
$ awk '{cnts[$2 "," $3]++}
END{for (e in cnts) print e ": " cnts[e]}' names.txt
Billy,Billy: 3
Billy,Joe: 1
首先需要测试$2==$3,然后测试其中一个是否等于Billy。递增一个计数器,然后在末尾打印结果:
$ awk '$2==$3 && $2=="Billy"{cnt++} END{print cnt+0}' names.txt
3
或者,你几乎可以写下你所说的:
$ awk '$2=="Billy" && $3=="Billy" {cnt++} END{print cnt+0}' names.txt
3
如果要使用变量,不需要多次键入:
$ awk -v name='Billy' '$2==name && $3==name {cnt++}
END{printf "Found \"%s\" %d times\n", name, cnt+0}' names.txt
Found "Billy" 3 times
或者,您可以收集所有信息并报告发现的内容:
$ awk '{cnts[$2 "," $3]++}
END{for (e in cnts) print e ": " cnts[e]}' names.txt
Billy,Billy: 3
Billy,Joe: 1
你也可以考虑使用GRIP来做到这一点,
$ grep -c "\sBilly\sBilly" name.txt
3
-C:打印匹配行计数
,也可以考虑使用GRIP来完成,$ grep -c "\sBilly\sBilly" name.txt
3
-c:打印一个匹配行计数您有多个文件或仅输入?您有多个文件或仅输入?@EdMorton:谢谢您的建设性意见。编辑。@EdMorton:谢谢你的建设性评论。所做的编辑。