¿Cómo compilar líneas con una determinada palabra en la última columna en un archivo separado?

¿Cómo compilar líneas con una determinada palabra en la última columna en un archivo separado?

Tengo un archivo csv y necesito filtrarlo en dos archivos en función de si la última columna contiene la palabra "ecDNA". Ya tengo dos copias más del archivo para editar sin cambiar el archivo original. ¿Hay alguna manera de eliminar todas las líneas que no contienen "ecDNA" de un archivo y conservar solo las líneas que contienen "ecDNA" de otra copia del archivo?

Respuesta1

awk -F, '$NF ~ /ecDNA/' oldfile > newfile

NF es el número de campos (columnas) en la línea de entrada actual, por lo que $NF es el valor (contenido) del último campo. Si $NF contiene "ecDNA", imprima la línea. De lo contrario, ignóralo.

Si necesita que la coincidencia no distinga entre mayúsculas y minúsculas (y está usando GNU awk), use:

awk -F, -v IGNORECASE=1 '$NF ~ /ecDNA/' oldfile > newfile

Para la coincidencia invertida (líneas sin ecDNAel último campo), niegue el operador de condición:

awk -F, '$NF !~ /ecDNA/' oldfile > newfile2

información relacionada