Estoy buscando una expresión regular que encuentre todas las apariciones de caracteres dobles en un texto, una lista, etc. en la línea de comando (Bash).
Principal Pregunta : ¿Hay una manera sencilla para buscar secuencias como aa, ll, ttttt, etc, donde se define una expresión regular que busca n ocurrencias del mismo carácter con? Lo que estoy buscando es lograr esto en un nivel muy muy básico. En la línea de comando. En un Shell de Linux.
Después de bastante investigación llegué a las siguientes respuestas, y las preguntas resultantes de ellas, por lo que me dieron una pista de dónde podría estar la solución. Pero:
a) (e) grep y el problema de la barra invertida
grep 'a\{2\}'buscaaaegrep'a{2}'buscaaa
Pregunta: ¿La necesidad de establecer contragolpes está realmente vinculada al comando que uso? Si es así, ¿alguien puede darme una pista de qué más se debe tener en cuenta al usar (e) grep aquí?
b) Encontré esta respuesta aquí para mi pregunta, aunque no es exactamente lo que estaba buscando:
grep -E '(.)\1' filenamebusca entradas con el mismo carácter que aparecen más de una vez, pero no pregunta con qué frecuencia . Esto está cerca de lo que estoy buscando, pero todavía quiero establecer una serie de repeticiones.
Probablemente debería dividir esto en dos o más preguntas, pero no quiero inundar este increíble sitio aquí.
PD: Otra pregunta, posiblemente fuera de tema, pero: ¿es in, inside, ato on the shell. ¿Y es on the command linecorrecto?

egrepsi necesito expresiones regulares (en lugar de solo una simple coincidencia de cadenas) para no tener que preocuparme por recordar las diferencias entregreplos dos tipos de expresiones regulares.grep '\(.\)\1\{3\}'es estándar,grep -E '(.)\1{3}'no lo es.Esto buscaría 2 o más ocurrencias del mismo personaje:
Si su awk tiene la opción -o, esto lo imprimirá cada partido en una nueva línea.
Para encontrar coincidencias con exactamente 3 coincidencias:
O 3 o más:
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 está en otros greps. Debería usar una de las versiones a continuación.
Versiones regulares de grep:
La
-oopción tampoco es grep estándar BTW (probablemente si su grep entiende -o también puede hacer la referencia inversa).Nota : el
grep -E '(.)\1{2,}'archivo y elgrep '\(.\)\1\{2\}'archivo son incorrectos como lo indicó alexis y deben ignorarse.fuente
-Eopcióngrepno haría mucho? ¡Esto explicaría bastante, por ejemplo, por qué perdí tanto tiempo buscando dónde me equivoqué!+operador. También publicaré ejemplos.grep -E '(.)\1{2}'no exactamente "Encuentra coincidencias con exactamente 3 coincidencias". Si bien coincidirá exactamente con tres caracteres idénticos, pueden incrustarse en una cadena repetida más larga; por ejemplo, coincidirá en la cadena de 5 símbolosAAAAA. (Y si hay 6 o más símbolos consecutivos, coincidirá más de una vez).Primero, gracias a todos por sus comentarios y sugerencias de apoyo. Resulta que ya estaba bastante cerca de la respuesta.
El problema principal era sobre:
Respuesta corta :
Los siguientes [variaciones de] comandos se repetirán
aal menos una e infinitas vecesgrep 'a\{1,}grep -E \(a\)\{1,\}egrep a{1,}o con GNU Expresiones regulares disponibles
grep a\+El número de repeticiones se establece dentro de las llaves, a través del patrón
{min,max}→{n}repetir exactamente lasnveces,{n,}repetir al menosnveces y{n,m}repetir al menosnpero en la mayoría de lasmveces.Por lo tanto, como consecuencia, planteó la cuestión secundaria :
Respuesta corta : Sí, el uso de barras invertidas depende de si uno usa
grepoegrepgrep: la barra diagonal inversa activa metacaracteres [utiliza expresiones regulares básicas]egrepbarra invertida de -activates metacaracteres [usos expresiones regulares extendidas]Como esta es la respuesta corta, quiero proporcionarles a aquellos que se encontraron con problemas comparables, agregué mi resumen básico de lo que aparentemente uno tiene que tener en cuenta, trabajando con
grepyegrep.Expresiones regulares básicas, extendidas y GNU
Expresiones Regulares Básicas
Utilizado en
grep,edysedcomandosLas características básicas del conjunto de expresiones regulares son:
? [ . \ )etc., se activan mediante una barra invertida. Si no hay barra invertida, se tomarán como (parte del) término de búsqueda.^ $ \<y\>son compatibles sin una barra invertida\b,\s, etc.]Las expresiones regulares básicas de GNU se suman a estas
\?repite el carácter cero o una vez (c\?coincidecycc) y es una alternativa para\{0,1\}\+repite un personaje al menos una vez (c\+coincidenciascc,ccccccccetc.) y es una alternativa para\{1,\}\|es compatible (por ejemplogrep a\|b, buscaráaobgrep -Epermite que el comando use todo el conjunto de Expresiones regulares extendidas:Expresiones regulares extendidas [ERE]
Se utiliza en
egrep,awkyemacses el conjunto básico más algunas características bastante.GNU Extendnd Expresiones regulares
agrega las siguientes características
Los dos enlaces lo dirigirán a regular-expressions.info que, además del increíble soporte que tengo aquí, realmente me ayudó mucho.
fuente