Como excluir linhas que deram colunas?

2

Existe um arquivo de entrada que possui colunas delimitadas por TAB.

Precisamos remover as linhas que possuem "NA" para a quarta e a décima primeira coluna.

Pergunta: como podemos fazer isso no awk?

    
por thequestionthequestion 21.10.2014 / 20:42

2 respostas

3
awk -F"\t" '$4 != "NA" || $11 != "NA"' filename

Note que o awk não edita o arquivo no local. Se você quiser salvar as alterações de volta no arquivo, então:

tmp=$(mktemp)
awk -F"\t" '...' filename > "$tmp" && mv "$tmp" filename
    
por 21.10.2014 / 20:51
3

Você diz awk para imprimir as linhas que não atendem aos seus critérios.

BEGIN { FS="\t" }
$4 != "NA" || $11 != "NA"

Este é um reverso da lógica booleana em que ~a|~b == a&b .

    
por 21.10.2014 / 20:52