Cómo usar la coincidencia negativa con grep en Linux (imprimir líneas que no coinciden)
grep
es una utilidad de búsqueda de línea de comandos para Linux que imprime líneas en archivos que coinciden con un patrón o una expresión regular. También es útil invertir las coincidencias para filtrar todas las líneas de un archivo que contienen una cadena determinada.
Coincidencia negativa con grep
Para usar una coincidencia negativa en grep
, debe emitir el comando con las -v
banderas o . --invert-match
Esto imprimirá solo aquellas líneas que no coincidan con el patrón dado.
grep -v "bar"file
Tenga en cuenta, sin embargo, que dado que grep
nada coincide, no hay forma de usar -o
la bandera para generar «solo coincidencias», ya que técnicamente nada coincide. grep
puede coincidir varias veces en una cadena, pero en este caso no importa si hay varias coincidencias. Cualquier coincidencia individual resultará grep
en un salto de línea.
Esto también funciona con expresiones regulares (regex) e imprimirá cualquier cadena que coincida con la expresión regular.
grep -v "foo ba[rz]"file
Si bien puede escribir expresiones regulares que hagan una coincidencia negativa, por lo general es más fácil revertir la coincidencia de esta manera.
Alternativamente, si prefiere usar awk
, puede usar el modificador de exclamación para invertir la expresión regular.
awk '!/bar/' file
Nombres de archivo coincidentes negativos
La marca en minúsculas -l
hará grep
que se impriman los nombres de archivo que contengan coincidencias en lugar del contenido coincidente real. Esto puede ser útil al escanear una lista de archivos, pero a veces también es útil para invertirla.
Reverse -l
es una variante en mayúsculas -L
que hace lo contrario:
grep -L "bar". /*.txt
Asegúrese de no usar -v
el indicador c -L
para invertir la coincidencia antes de imprimir archivos sin una coincidencia, o se encontrará con una situación de «doble opuesto» en la que la coincidencia se invierte dos veces y no tiene el efecto deseado.
Deja una respuesta