Você não pode fazer grep -v " 3 "
, presumindo que as colunas são delimitadas por espaços?
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?
Que tal:
awk '$2 != 3' filename
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)
Você pode usar:
grep -v -P '\t3\t' filename
-P
é um correspondente de expressão regular no estilo Perl.