Excluir linha com valor numérico específico

5

Eu tenho um arquivo assim:

AA  110 B   2   ..  BB  3   ... BBB 3   D   F   3   D   D
AA  111 B   2   ..  BB  3   ... BBB 0   F   F   0   F   F
AA  112 C   2   ..  BB  3   ... BBB 0   D   F   0   D   F
AA  120 D   2   ..  FF  3   ... FFF 3   D   F   3   D   D

Eu gostaria de remover qualquer linha que contenha o valor numérico específico de 0. Se eu fizer isso:

sed '/0/d' infile > newfile

as linhas 1 e 4 são excluídas porque contêm "0s" em 110 e 120. Tentei outras opções com grep grep -v '0' infile > newfile ou awk, mas sem sorte.

Tenho certeza de que existe uma maneira direta de fazer isso, mas não consigo encontrá-lo. Alguma idéia?

Obrigado!

    
por AP38 14.09.2016 / 21:14

3 respostas

7

Adicione -w a grep para fazer correspondência de palavras inteiras:

$ grep -vw 0 infile 
AA  110 B   2   ..  BB  3   ... BBB 3   D   F   3   D   D
AA  120 D   2   ..  FF  3   ... FFF 3   D   F   3   D   D
    
por 14.09.2016 / 21:28
7

Tente âncoras de limite de palavras

sed '/\b0\b/d' file
AA  110 B   2   ..  BB  3   ... BBB 3   D   F   3   D   D
AA  120 D   2   ..  FF  3   ... FFF 3   D   F   3   D   D
    
por 14.09.2016 / 21:30
2

Atualização para tabulação delimitada

sed '/\t0\t/d' infile > newfile

No entanto, este é mais seguro:

sed '/\b0\b/d' infile > newfile
    
por 14.09.2016 / 21:25