Esto realmente son dos preguntas, y deberían haberse dividido. Pero como las respuestas son relativamente simples, las pondré aquí. Estas respuestas son para GNU grep
específicamente.
a) egrep
es lo mismo que grep -E
. Ambos indican que se deben usar "Expresiones regulares extendidas" en lugar de grep
Expresiones regulares predeterminadas. grep
requiere las barras invertidas para expresiones regulares simples.
Desde el man
página:
Expresiones regulares básicas y extendidas
En las expresiones regulares básicas, los metacaracteres ? ,
Ver el man
página para obtener detalles adicionales sobre convenciones históricas y portabilidad.
b) Utilice egrep '(.)\1{N}'
y reemplaza N
con el número de caracteres que deseas reemplazar menos uno (ya que el punto coincide con el primero). Entonces, si desea hacer coincidir un carácter repetido cuatro veces, use egrep '(.)\1{3}'
.
Esto buscaría 2 o más ocurrencias del mismo carácter:
grep -E '(.)\1+' file
Si su awk tiene la opción -o, esto imprimiría cada coincidencia en una nueva línea.
grep -Eo '(.)\1+' file
Para encontrar coincidencias con exactamente 3 coincidencias:
grep -E '(.)\1{2}' file
O 3 o más:
grep -E '(.)\1{2,}' file
etc..
editar
En realidad, @stephane_chazelas tiene razón sobre las referencias anteriores y -E. Me había olvidado de eso. Lo probé en BSD grep y GNU grep y funciona allí, pero no en otros greps. Tendrías que usar una de las siguientes versiones..
Versiones regulares de grep:
grep '\(.\)\1\{1,\}' file
grep -o '\(.\)\1\{1,\}' file
grep '\(.\)\1\{2\}' file
grep '\(.\)\1\{2,\}' file
El -o
la opción tampoco es grep estándar por cierto (probablemente si su grep entiende -o también puede hacer la referencia posterior).
Nota :grep -E '(.)\1{2,}'
archivo y grep '\(.\)\1\{2\}'
El archivo está mal como lo indicó Alexis y debe ignorarse.
En primer lugar, gracias a todos por sus comentarios de apoyo y sugerencias. Resulta que ya estaba bastante cerca de la respuesta.
El problema principal se trataba de:
¿Existe una forma sencilla de buscar n? ocurrencias del mismo carácter, p. aa
, tttttt
Respuesta corta :
Las siguientes [variaciones de] comandos repetirán a
al menos una e infinitas veces
grep 'a\{1,}
grep -E \(a\)\{1,\}
egrep a{1,}
o, con las expresiones regulares de GNU disponiblesgrep a\+
El número de repeticiones se establece entre llaves, a través del patrón {min,max}
→ {n}
repetir exactamente n
veces, {n,}
repetir al menos n
veces y {n,m}
repetir al menos n
pero a lo sumo m
veces.
Así, como consecuencia, se planteó la cuestión secundaria :
¿La necesidad de establecer retrocesos está ligada al comando Iuse?
Respuesta corta :Sí, el uso de barras invertidas depende de si se usa grep
o egrep
grep
:barra invertida activa metacaracteres [usa expresiones regulares básicas]egrep
barra invertida de -activa metacaracteres [usa expresiones regulares extendidas]
Como esta es la respuesta corta, quiero proporcionar a aquellos que se encontraron con problemas similares, agregué mi resumen básico de lo que aparentemente uno debe tener en cuenta, trabajando con grep
y egrep
.
Expresiones regulares básicas, extendidas y GNU
Expresiones regulares básicas
Usado en grep
, ed
y sed
comando
Las características básicas del conjunto de expresiones regulares son:
- La mayoría de los metacaracteres, p.
? [ . \ )
etc. se activan a través de una barra invertida. Si no hay una barra invertida, se tomarán como (parte del) término de búsqueda. ^ $ \<
y\>
son compatibles sin una barra invertida- Sin caracteres abreviados [
\b
,\s
, etc]
GNU Las expresiones regulares básicas se suman a estas
\?
repetir el carácter cero o una vez (c\?
coincide conc
ycc
) y es una alternativa para\{0,1\}
-
\+
repetir un carácter al menos una vez (c\+
coincide concc
,cccccccc
etc.) y es una alternativa para\{1,\}
-
\|
es compatible (por ejemplo,grep a\|b
buscaráa
ob
grep -E
permite que el comando use todo el conjunto de expresiones regulares extendidas:
Expresiones regulares extendidas [ERE]
Usado en egrep
, awk
y emacs
es el conjunto básico más algunas funciones.
- Los metacaracteres se desactivan mediante una barra invertida
- Sin referencias anteriores
- más:muchas de las expresiones regulares mágicas generalmente pueden hacer por uno
GNU Ampliar Expresiones Regulares
agrega las siguientes características
- clases de taquigrafía
- cuantificadores
Los dos enlaces lo dirigirán a regular-expressions.info que, además del increíble soporte que tengo aquí, realmente me ayudó mucho.