Cómo usar la coincidencia negativa con grep en Linux (imprimir líneas que no coinciden)

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-matchEsto 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 -Lque hace lo contrario:

grep -L "bar". /*.txt

Asegúrese de no usar -v el indicador c -Lpara 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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *