我需要搜索一个.txt文件,只有当一个单词在一行中出现两次时。因此,如果我有短语:"我今天喂了我的猫,我的猫很高兴",它将返回 1,但前提是该词在同一行中出现两次。我需要整个文件的行数。我正在使用程序腻子在 unix 中执行此操作。
像这样的事情怎么样:
grep -e "cat.*cat" input | wc -l
grep "cat.*cat" input_file | wc -l
解释:
-
grep
: 什么是 grep? -
"cat.*cat"
:在这种情况下,要搜索的模式:字面意思是cat
,后跟.*
,其中句点.
表示"匹配任何字符",并且由星号*
(0或更多)量化,因此它们一起表示"匹配任意数量的字符",然后是字面上的另一个cat
-
input_file
下一个论点grep
,为了"救猫"(不用担心"救猫"部分,傻书笑话=p) -
|
是 Unix 中的管道命令,它从 grep 获取stdout
并将其馈送到下一个程序的stdin
中,即...... -
wc -l
- 调用"字数统计"程序并使用"行"选项计算行数。
在一个
awk
命令中查找和计数
awk '/cat.*cat/ {a++} END {print a}' file
基本上:
cat.*cat
如果您只想匹配整个单词,则可能需要为单词边界(取决于工具的语法)添加锚点。