
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 ecDNA
no último campo), negue o operador de condição:
awk -F, '$NF !~ /ecDNA/' oldfile > newfile2