刚刚掌握了 Linux 命令行的窍门,但在使用 grep 命令时遇到了麻烦。
我试图找出一个单词在文本文件的最后 1000 行中出现的次数
我有一种感觉,我需要使用 grep 和管道,但无法弄清楚
如果您不想计算出现次数,而是计算匹配行数,请使用@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)