假设我有一个带有以下
的names.txt文件Bob Billy Billy
Bob Billy Joe
Bob Billy Billy
Joe Billy Billy
并使用awk我想知道$ 2 = Billy多少次,而$ 3 = Billy。在这种情况下,我想要的输出将是3次。
另外,如果重要的话,我会在Mac上对此进行测试。
答案 0 :(得分:3)
首先需要测试$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
答案 1 :(得分:1)
您也可以考虑使用grep
来做到这一点,
$ grep -c "\sBilly\sBilly" name.txt
3
-c
:打印匹配行数