用任何(非重叠)连续字母组来grep任何单词

时间:2015-10-04 02:04:07

标签: regex grep

我试图grep任何具有任何指定连续字母组的单词,并且这些组不得重叠。具体来说,例如,假设我想找到2组连续的字母,我尝试了以下命令,但它没有用。 PS:sample是一个txt文件,每行包含一个单词。

grep -iE '.*([a-z])\1..*([a-z])\1.*' sample

2 个答案:

答案 0 :(得分:3)

你几乎得到了它。

$ echo "russell" | grep -iE '([a-z])\1.*([a-z])\2'
russell

主要的功能差异是第二个反向引用必须是\2才能引用第二个括号内的表达式。

其他差异..前导和尾随.*似乎是多余的,你似乎在表达式的中间有一个额外的点。该点将匹配任何字符,因此它允许aabcc匹配,但不允许aabb

答案 1 :(得分:1)

你很接近,改变你的正则表达式:

'.*([a-z])\1..*([a-z])\1.*'

为:

'.*([a-z])\1..*([a-z])\2.*'

第二个反向引用应该引用第二个捕获的组 - 而不是第一个。