正则表达式匹配包含n个单词的行

时间:2016-12-09 15:19:52

标签: regex linux grep

我正在尝试显示仅包含两个单词的5个最常见的行 到目前为止我所拥有的是:

grep '^[a-zA-Z]+ [a-zA-Z]+' text.txt | sort |uniq -c | sort -rn | head -n 5

谢谢

问题是代码的第一部分是返回有两个以上单词的行:

2 个答案:

答案 0 :(得分:4)

您需要锚定正则表达式,为行开头添加^,为行结尾添加$,并添加\+量词以在每个单词中启用多个字母:

grep '^[a-zA-Z]\+ [a-zA-Z]\+$'

答案 1 :(得分:0)

你非常接近。

试试这个:

sort text.txt | uniq -c | sort -m | egrep "^[ \t]* [0-9]+ [^ ]* [^ ]*$" | sort -n

对文件进行排序。 计算独特的线条。 对输出进行排序。 最后,找到3列的行。

我的输出看起来像这样:

        $ sort text.txt | uniq -c | sort -m | egrep "^[ \t]* [0-9]+ [^ ]* [^ ]*$" | sort -n
        16 wE1 wE2
        17 wD1 wD2
        18 wC1 wC2
        19 wB1 wB2
        20 wA1 wA2

干杯。

相关问题