Mou*_*use 6 regex unix bash grep word-boundary
我需要在unix(bash)中使用egrep(或grep -e)在文件中找到重复的单词
我试过了:
egrep "(\<[a-zA-Z]+\>) \1" file.txt
Run Code Online (Sandbox Code Playgroud)
和
egrep "(\b[a-zA-Z]+\b) \1" file.txt
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,这些都认为重复的事情不是!例如,它认为字符串"单词单词"符合标准,尽管单词边界条件\> 或\b.
\1匹配第一次捕获匹配的任何字符串。这与匹配与第一次捕获匹配的相同模式不同。因此,第一个捕获在单词边界上匹配的事实不再相关,即使\b是在捕获括号内。
如果您希望第二个实例也位于单词边界上,则需要这样说:
egrep "(\b[a-zA-Z]+) \1\b" file.txt
Run Code Online (Sandbox Code Playgroud)
这与:
egrep "\b([a-zA-Z]+) \1\b" file.txt
Run Code Online (Sandbox Code Playgroud)
模式中的空格强制一个单词边界,所以我删除了多余的\bs。如果你想更明确,你可以把它们放在:
egrep "\<([a-zA-Z]+)\> \<\1\>" file.txt
Run Code Online (Sandbox Code Playgroud)