需要一个带有 grep word 命令的手

6rx*_*rut 2 grep

刚刚掌握了 Linux 命令行的窍门,但在使用 grep 命令时遇到了麻烦。

我试图找出一个单词在文本文件的最后 1000 行中出现的次数

我有一种感觉,我需要使用 grep 和管道,但无法弄清楚

ter*_*don 6

如果您不想计算出现次数,而是计算匹配行数,请使用@heemayl 的答案。但是,如果您想计算每次出现的次数(因此,计算word foo word为 2 次点击,而不是一次),您可以执行以下操作:

tail -1000 file | grep -o word | wc -l
Run Code Online (Sandbox Code Playgroud)

tail命令打印最后 1000 行,grep -o word搜索word并打印找到的每个案例(因此如果匹配两次,它将打印两次)并wc -l计算返回的行数。

或者,您可以使用类似 perl 的东西来进行计数:

tail -n 1000 file | perl -alne '$k+=grep{/word/} @F; END{print $k}'  
Run Code Online (Sandbox Code Playgroud)

最后,请注意,这也将计算诸如wordsmith. 要仅在您的模式构成整个单词时进行匹配,请grep-w标志一起使用:

tail -1000 file | grep -wo word | wc -l
Run Code Online (Sandbox Code Playgroud)

或者

tail -n 1000 file | perl -alne '$k+=grep{/\bword\b/} @F; END{print $k}'
Run Code Online (Sandbox Code Playgroud)

  • @6rxobrut 不,`tail -1000 文件 | grep -wc word` 会将 `word word` 算作一个,而不是两个。`-c` 选项计算匹配的 _lines_ 而非出现次数。 (2认同)