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 ecDNA
el último campo), niegue el operador de condición:
awk -F, '$NF !~ /ecDNA/' oldfile > newfile2