您好,我想知道如何grep
行连续两次重复的单词。显然必须考虑两个单词之间的空格,并且它必须区分大小写,我认为grep
自然是。
我不仅仅想要一个答案,而是想知道如何去做并理解它。所以任何响应的人都可以请你解释这句话的内容或模式的作用。我对grep
和bash
进行了基本到中级的掌握,但仍然学习grep
的所有复杂性和相关语法。任何和所有的帮助将不胜感激。
虽然我也不确定我在这里做了什么,但是我还没有得到大声笑......
grep '.*\|.*\| '
全部谢谢!! 干杯!
答案 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一样。