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 POSIXgrep
). - 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