刚刚掌握 Linux 命令行,但在使用 grep 命令时遇到了困难。
我试图找出一个单词在文本文件的最后 1000 行中出现了多少次
我感觉我需要使用 grep 和管道,但想不通
答案1
如果您不想计算出现次数,而是计算匹配行数,请使用@heemayl 的答案。但是,如果您想计算每次出现次数(因此,算作word foo word
2 次匹配,而不是 1 次),您可以执行以下操作:
tail -1000 file | grep -o word | wc -l
该tail
命令打印最后 1000 行,grep -o word
搜索word
并打印找到的每个案例(因此,如果匹配两次,它将打印两次)并wc -l
计算返回的行数。
或者,你可以使用像 perl 这样的程序来进行计数:
tail -n 1000 file | perl -alne '$k+=grep{/word/} @F; END{print $k}'
最后,请注意,这也会计算诸如 之类的内容wordsmith
。要仅当您的模式形成整个单词时才进行匹配,请使用grep
标志-w
:
tail -1000 file | grep -wo word | wc -l
或者
tail -n 1000 file | perl -alne '$k+=grep{/\bword\b/} @F; END{print $k}'
答案2
以下是一般模式:
tail -1000 file.txt | grep -c "word"
这将打印出名为 的文件最后 1000 行中包含模式“word”的行数file.txt
。这里我们用来tail -1000
获取文件的最后 1000 行,然后仅用于grep -c
计算这些行中模式的出现次数。