如何grep或egrep连续出现两次的单词?

时间:2017-10-18 00:40:24

标签: bash grep row repeat word

您好,我想知道如何grep行连续两次重复的单词。显然必须考虑两个单词之间的空格,并且它必须区分大小写,我认为grep自然是。

我不仅仅想要一个答案,而是想知道如何去做并理解它。所以任何响应的人都可以请你解释这句话的内容或模式的作用。我对grepbash进行了基本到中级的掌握,但仍然学习grep的所有复杂性和相关语法。任何和所有的帮助将不胜感激。

虽然我也不确定我在这里做了什么,但是我还没有得到大声笑......

grep '.*\|.*\| '

全部谢谢!! 干杯!

2 个答案:

答案 0 :(得分:0)

您可以使用grep -E '(\<[^[:blank:]]+\>).*\1'

\<\>代表字边界。与非空白字符序列一起形成一个单词。然后\1回忆起第一组捕捉括号。

答案 1 :(得分:0)

\ 1匹配匹配的第一个字符串匹配的每个字符串。这与匹配第一个字符串匹配的相同模式不同。因此,在字边界上匹配的第一个捕获不再相关,即使\ b在捕获括号内。

如果您希望第二个实例也在单词边界上,那么您必须这样说。

同样通过使用正则表达式,我们可以说我们想要所有小的a-z和大的A-Z字。同样通过使用+我们说前面的字符至少匹配1次或更多次。

egrep "(\b[a-zA-Z]+) \1\b" file.txt

这将显示两次使用的所有单词。

grep -E "(\b[a-zA-Z]+) \1\b" file.txt

如果您想使用grep,此命令也可以使用。 grep -E表示它使用扩展的正则表达式。所以它和egrep一样。