Como compilar linhas com uma determinada palavra na última coluna em um arquivo separado?

Como compilar linhas com uma determinada palavra na última coluna em um arquivo separado?

Eu tenho um arquivo csv e preciso filtrá-lo em dois arquivos com base no fato de a última coluna conter a palavra "ecDNA". Já tenho mais duas cópias do arquivo para editar sem alterar o arquivo original. Existe alguma maneira de excluir todas as linhas que não contêm "ecDNA" de um arquivo e reter apenas as linhas que contêm "ecDNA" de outra cópia do arquivo?

Responder1

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

NF é o número de campos (colunas) na linha de entrada atual, então $NF é o valor (conteúdo) do último campo. Se $NF contiver "ecDNA", imprima a linha. Caso contrário, ignore.

Se você precisar que a correspondência não diferencie maiúsculas de minúsculas (e estiver usando GNU awk), use:

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

Para a correspondência invertida (linhas sem ecDNAno último campo), negue o operador de condição:

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

informação relacionada