如何grep或egrep连续出现两次的单词?
问题描述:
嗨,我想知道如何grep
线连续两次重复单词。这两个词之间的空格显然必须考虑在内,并且必须是区分大小写的,我相信grep
当然是。如何grep或egrep连续出现两次的单词?
我不只是想要一个答案,而是我想知道如何去做并理解它。所以任何人都可以回答,请你解释一下这条线是在说什么,或者模式在做什么。我对grep
和bash
有一个基本到中级的把握,但是仍然在学习所有错综复杂的grep
和相关语法。任何和所有的帮助将不胜感激。
,因为我虽然我还不能确定,我在这里做什么还没有得到洛尔这是接近...
grep '.*\|.*\| '
谢谢大家! 干杯!
答
你会使用grep -E '(\<[^[:blank:]]+\>).*\1'
的\<
和\>
代表单词边界。连同非空白字符序列一起形成一个单词。然后\1
记得第一组捕获括号。
答
\ 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一样。
不幸的是,许多工具使用稍微不同的正则表达式。 GNU工具的正则表达式(grep,awk等)可以在https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html#Regular-expression-syntaxes找到。 –