Shell编程如何统计一个单词在一行中出现的次数?

标签 shell awk count line cpu-word

如何统计一个单词在一行中出现的次数? 例如,我有单词“man”和以下几行:

a man walks here
nobody over here
from man to man

结果应该是:在第一行,一次,在第二行 0 次,在最后一行两次。

最佳答案

使用 awk 你可以轻松做到这一点:

awk -F 'man' '{print (NF?NF-1:0)}' file

1
0
2

-F 'man' 将输入字段分隔符设置为 manNF 打印每行的字段数。

如果您想计算完整单词数,请使用此gnu-awk:

awk -F '\\<man\\>' '{print (NF?NF-1:0)}' file

对于非 gnu awk,你可以使用这个:

awk -F '(^|[^[:alnum:]])man([^[:alnum:]]|$)' '{print (NF?NF-1:0)}' file

关于Shell编程如何统计一个单词在一行中出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36461045/

相关文章:

linux - 如何使用awk提取自定义文件名?

linux - 使用 awk 使用通过函数传递的参数删除多行

regex - 如何使用 vars 在 awk 中排除多个非字母数字字符

mysql - 复杂的 MySQL COUNT 查询

shell - AWK 使用空格和正斜杠或逗号作为分隔符

linux - 如何在 bash 脚本中通过掩码更改字符串?

Excel:如何执行以下操作:从 TBL 中选择 count(col3,col4,col5,col6,col7) where col2 = '1-Jan' ;

MySQL 对查询返回的行进行计数和排序

bash - 如果字符出现少于 20 次,则从列中删除字符

c - 隐藏 ^C 在 C 中按 ctrl-c