我需要在unix(bash)中使用egrep(或grep -e)在文件中找到重复的单词
我试过了:
egrep "(\<[a-zA-Z]+\>) \1" file.txt
和
egrep "(\b[a-zA-Z]+\b) \1" file.txt
但是出于某种原因,这些人认为事情不是重复!
例如,尽管单词边界条件为
\>
或\b
,它仍认为字符串“单词words”符合标准。 最佳答案
\1
匹配第一次捕获匹配的任何字符串。这与匹配与第一次捕获所匹配的模式不同。因此,即使\b
在捕获括号内,匹配单词边界的第一个捕获也不再相关。
如果您希望第二个实例也位于单词边界上,则需要这样说:
egrep "(\b[a-zA-Z]+) \1\b" file.txt
这与以下内容没有什么不同:
egrep "\b([a-zA-Z]+) \1\b" file.txt
模式中的空格会强制单词边界,因此我删除了多余的
\b
。如果您想更明确一点,可以将它们放在:egrep "\<([a-zA-Z]+)\> \<\1\>" file.txt
关于regex - 如何使用grep/egrep在文件中找到重复的单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33396629/