varios varias usar regulares patrones palabras palabra hacer expresiones exacta egrep doble buscar bash grep newline

bash - varias - ls grep



¿Cómo dar un patrón para una nueva línea en grep? (5)

En cuanto a la solución alternativa (sin utilizar -P no portátil), puede reemplazar temporalmente un carácter de nueva línea con el diferente y volver a cambiarlo, por ejemplo:

grep -o "_foo_" <(paste -sd_ file) | tr -d ''_''

Básicamente, está buscando la coincidencia exacta _foo_ donde _ significa /n (entonces __ = /n/n ). No tiene que volver a traducirlo por tr ''_'' ''/n'' , ya que cada patrón se imprimirá en la nueva línea de todos modos, por lo que eliminar _ es suficiente.

¿Cómo dar un patrón para una nueva línea en grep? Nueva línea al inicio, nueva línea al final. No es la forma de expresión regular. Algo así como / n.


Gracias a @jarno, conozco la opción -z y descubrí que al usar grep de GNU con la opción -P, es posible hacer coincidencias con /n . :)

Ejemplo:

grep -zoP ''foo/n/K.*''<<<$''foo/nbar''

bar estampados


Puedes usar de esta manera ...

grep -P ''^/s$'' file

  • -P se usa para expresiones regulares de Perl (una extensión de POSIX grep ).
  • coinciden con los caracteres de espacio en blanco; si es seguido por * , también coincide con una línea vacía.
  • ^ coincide con el principio de la línea. $ coincide con el final de la línea.

intente pcregrep lugar de grep regular:

pcregrep -M "pattern1.*/n.*pattern2" filename

La opción -M permite coincidir en varias líneas, por lo que puede buscar líneas nuevas como /n .


grep patrones grep se comparan con líneas individuales, por lo que no hay forma de que un patrón coincida con una nueva línea encontrada en la entrada.

Sin embargo puedes encontrar líneas vacías como esta:

grep ''^$'' file grep ''^[[:space:]]*$'' file # include white spaces