Como procurar uma linha que tenha o mesmo número que você precisa e não precisa

2

Isso não é fácil de explicar, mas fácil de mostrar.

Eu tenho linhas em um arquivo como:

100Dollars              3              IP  
200Dollars              3              IP
300Dollars              4              IP

Eu preciso do grep para as linhas que não possuem '3' na segunda coluna. Eu tentei o seguinte:

egrep -v '3' filename

No entanto, isso não retorna a terceira linha devido a ter um 3 na primeira parte dele. Há a minha pergunta básica, se isso faz sentido.

Como excluo o que está na primeira coluna e apenas o grep para o que quer que esteja na segunda coluna?

    
por roger34 23.03.2011 / 22:32

4 respostas

1

Você não pode fazer grep -v " 3 " , presumindo que as colunas são delimitadas por espaços?

    
por 23.03.2011 / 22:41
5

Que tal:

awk '$2 != 3' filename
    
por 28.03.2011 / 20:46
2

Eu acho que você quer subir para o awk ou grep, que pode fazer colunas (entre muitas outras coisas)

gawk '$1 ~ /3/ && $2 !~ /3/{print $0}' < filename

Deve fazer isso.

Isso procura um 3 na primeira coluna (as colunas são numeradas começando por 1 no awk, $ 0 é a linha inteira) e não um 3 na segunda coluna, e se assim for, imprima a linha inteira ($ 0)

    
por 23.03.2011 / 22:42
2

Você pode usar:

grep -v -P '\t3\t' filename

-P é um correspondente de expressão regular no estilo Perl.

    
por 23.03.2011 / 22:52