No, no es correcto. No tengo idea de qué \1{3}
se supone que es, pero eso es lo que te está causando problemas. Si desea buscar líneas que contengan tres caracteres repetidos seguidos de otros tres caracteres repetidos, puede usar esto:
grep -E '([a-z])\1{2}([a-z])\2{2}'
El se \1
refiere al primer grupo capturado . Puede capturar grupos usando paréntesis. Entonces, \1
es el primer grupo de este tipo y \2
es el segundo y así sucesivamente. Como no tenía grupos capturados, grep
se quejaba de una referencia no válida ya que no tenía nada a lo que referirse. Entonces, en la expresión regular anterior, los paréntesis capturan los dos grupos. Entonces, usted quiere {2}
y no, {3}
ya que la coincidencia inicial también se cuenta.
No especifica si necesita que la coincidencia sea una palabra o si también desea coincidir dentro de las palabras. Si desea que la palabra completa coincida (y excluya cosas como aaaabbb
, use esto en su lugar:
grep -wE '([a-z])\1{2}([a-z])\2{2}'
Para imprimir solo la parte coincidente de la línea (la palabra) y no toda la línea, use (solo GNU grep):
grep -owE '([a-z])\1{2}([a-z])\2{2}'
aaabbbfoobar
? ¿Qué hay deaaaabbb
? Idealmente, muéstranos alguna entrada de ejemplo y tu salida deseada.grep -E '([a-z]{2})([0-9]{2})\2\1'
coincidiríaaa9999aa
.oookkk
(no más de 6 caracteres) no palabras que contienenoookkk
comooookkkfoobar
grep -w
ejemplo que di en mi respuesta.aaaaaa
o necesitas al menos dos personajes diferentes? Considere darnos una entrada de ejemplo y la salida deseada.