如何使用unix grep和正则表达式打印字符串出现2次或更多次的行数?

时间:2013-10-02 18:58:37

标签: unix grep

我需要搜索一个.txt文件,这只有一个单词在一行中出现两次。因此,如果我有这样的短语:“我今天喂了我的猫,而我的猫很高兴”它会返回1,但只有当这个词在同一行出现两次时。我需要整个文件的行数。我正在使用程序putty在unix中执行此操作。

4 个答案:

答案 0 :(得分:2)

grep "cat.*cat" input_file | wc -l

说明:

  • grepwhat is grep?
  • "cat.*cat":在这种情况下,搜索的模式:字面cat,后跟.*,其中句点.表示“匹配任何字符”,以及它由星号*(0或更多)量化,因此它们一起表示“匹配任意数量的字符”,然后是字面上的另一个cat
  • input_file grep的下一个论点,为了“拯救一只猫”(不要担心“拯救猫”部分,愚蠢的书呆子笑话= p)
  • |是unix中的管道命令,从grep获取stdout并将其提供给下一个程序的stdin,这是......
  • wc -l - 调用“字数”程序并使用“line”选项计算行数。

答案 1 :(得分:2)

如下:

grep -e "cat.*cat" input | wc -l

答案 2 :(得分:1)

查找并计入一个awk命令

awk '/cat.*cat/ {a++} END {print a}' file

答案 3 :(得分:0)

基本上:

cat.*cat

如果您只想匹配整个单词,则可能必须为单词边界添加锚点(依赖于工具的语法)。