首页 > 解决方案 > shell : 使用 grep 在列中出现的字符串次数

问题描述

我的数据文件是:

name,age,favourite_person
Adam,19,Helen Keller
Alex,18,Joe Biden
Kyle,18,George Washington
Mary,20,Marie Curie
Jade,16,Marie Kondo

我想查找“Marie”在“favourite_person”列(第 3 列)中出现的次数。我现在的代码是 grep -R "Marie" file | wc -l,但这会检查整个文件中的“Marie”这个词。我只希望它在 favourite_person 列中进行检查。在这种情况下我应该添加什么?

标签: bashshell

解决方案


您可以按如下方式使用 awk:

awk 'BEGIN { FS = "," } {if ($3 ~ "Marie") { count++ }} END { print count }' file
  1. BEGIN { FS = "," }设置,为字段分隔符,
  2. { if ... }部分内容类似于“如果第三个字段与“Marie”匹配,则增加变量count“,
  3. END { print count }最后打印count

推荐阅读