¿Cómo usar Grep en la línea de comandos de Unix?


0

Quiero grep todas las líneas que contienen palabras que comienzan con "H" y terminan con "d". ¿Como podría hacerlo? Encontré que grep ^ H me dará la H para cada línea.



Depende de cómo se define un límite de palabra, por supuesto.
phogg

Respuestas:


2

Lo intentaré: /^H.*d$/. El ^ es el comienzo con y $ termina con. El. * Coincide con cualquier cosa.


dulce gracias hombre! Tuve que quitarme la "/" pero eso funcionó de nuevo gracias

2

¿Cómo definirías "palabras"?

Si están delimitados por espacios:

grep '\<H[^ ]*d\>' ...

Deberías hacerlo. \< y \> coincide con el principio y el final de una palabra, respectivamente. [^ ]* coincide con una secuencia de cero o más caracteres no espaciales.

Más, generalmente, si su grep lo admite (GNU grep lo hace):

grep '\<H[^[:space:]*d\>

encuentra palabras delimitadas por caracteres de "espacio": tabulación, nueva línea, tabulación vertical, avance de página, retorno de carro y espacio.

Supongo que "líneas que contienen palabras" significa que desea que "foo H123d bar" coincida. Si cada línea contiene una palabra completa, reemplaza \< por ^ y \> por $.

EDITAR : Esto podría no ser 100% correcto. \< y \> define una "palabra" como una secuencia no vacía de letras, dígitos y guiones bajos. Defina exactamente lo que quiere decir con "palabra", e intentaré refinar mi respuesta. En "*H*d*" es H*d una palabra"?

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.