2012-10-01 38 views
7

Necesito encontrar y mostrar líneas en el caparazón usando egrep que comienza con r y termina con g.líneas egrep que comienzan con r y terminan con g

He

egrep -e "^r*g$" testfile.txt 

pero no me da ningún resultado, ¿qué estoy haciendo mal?

+4

cambio "^ r * g $" a "^ r * g $." – iruvar

+0

Aunque se puede colocar un '$' al final de una cadena entre comillas dobles , sería mucho mejor escribir eso con comillas simples: ''^ r. * g $'' –

+0

Está confundiendo expresiones regulares con los patrones de coincidencia de archivos ("globbing") utilizados por el shell. En una expresión regular, '.' coincide con un solo carácter, y'. * 'Coincide con cero o más caracteres; en un patrón de coincidencia de archivos, es '?' y '*', y '.' no es especial. Los patrones de coincidencia de archivos son menos potentes, pero tienden a ser más convenientes para su propósito limitado de seleccionar archivos. –

Respuesta

10

la adición de un . debería funcionar

egrep -e "^r.*g$" 

Básicamente significa: todo lo que se inicia con un r, entonces es seguido por cero o más nada, y luego termina con g.

ensayaron frente

r fsgdfs gfsdg 
fooo bar 
rfoo g 
fdsqfdsq 

rg 

devuelve

r fsgdfs gfsdg 
rfoo g 
rg 
0

El * se coincidente en el r, no "cualquier cosa entre medio". Actualizarlo a .* y debería ver los resultados:

egrep -e "^r.*g$" testfile.txt 
Cuestiones relacionadas