Grep -v

1. Grep -v

Augusto Hagiro Pascutti
augusto_hp

(usa Debian)

Enviado em 25/10/2005 - 09:22h

Olha eu não sei vocês, mas eu não conhecia este parâmetro do grep, e olha que ele me é muito útil ... pode ter um uso simples de por exemplo tirar as linhas que iniciam com '#' (comentários) de um arquivo, entre várias outras utilidades.
Mas o que ele exatamente faz ?! O '-v' seria de --vai-embora; ele manda embora todas as linhas que contêm o texto determinado. Vamos supor que temos o arquivo agenda.dat:

agenda.dat
#Arquivo com os dados da agenda
# esse sou eu:
augusto:1234-4567
#agora os outros
caio:5581-6582
fabio:2563-9854

Pronto, se eu desse um "#cat agenda.dat | grep -v #'" o comando retornaria:
teste@~#cat agenda.dat | grep -v #
augusto:1234-4567
caio:5581-6582
fabio:2563-9854

Capitaram ? Espero que sim ;D
Espero tb ter ajudado em alguma coisa !


  


2. Legal

Rafael C P Cunha
rafa

(usa Debian)

Enviado em 24/11/2005 - 18:44h

Bem útil.


3. Muito bom

Thiago Rodines
throdines

(usa Outra)

Enviado em 21/12/2005 - 10:30h

Isso vai me ajudar pra caramba. !!!

Valeu

Thiago Rodines


4. Melhorias - expressões regulares extendidas

Mário Melo Filho
MasterSavage

(usa Slackware)

Enviado em 08/06/2006 - 15:31h

o grep é um canivete suiço para filtragem, mas é muito melhor quando temos regexp extendida ativada, no grep isso é fácil, basta utilizar a opção -E (ou --extended-regexp). Assim teremos um brinquedo maior e melhor :).
A opção -v indica a negação do padrão que da busca, como foi bem dito acima, mas eu gostaria de melhorar o exemplo dado:

vamos usar o arquivo agenda, com algumas linhas a mais
# esse sou eu:
augusto:1234-4567

#agora os outros
caio:5581-6582
fabio:2563-9854

# mais alguns telefones
fulado: 555-5555 # nao sei quem é
sicrano:66-66-66-66 # conheci ontem

embora o comando

$ cat agenda|grep -v #

esteja correto ele vai retirar todas as linhas com o caracter # (omitindo assim os dois ultimos telefones), uma melhoria seria retirarmos todas as linhas começando como caracter #. O comando seria:

$ cat agenda|grep -v -E '^#'

que retornaria

augusto:1234-4567

caio:5581-6582
fabio:2563-9854

# mais alguns telefones
fulado: 555-5555 # nao sei quem é
sicrano:66-66-66-66 # conheci ontem

Aqui um problema ocorreu, um dos comentarios não começa na primeira linha, e notem tb que há comentário depois dos telefones, melhorando o comando poderiamos ter:

$ cat agenda|$ cat agenda|grep -v -E '^[ ]*#'

que retornaria

augusto:1234-4567

caio:5581-6582
fabio:2563-9854

fulado: 555-5555 # nao sei quem é
sicrano:66-66-66-66 # conheci ontem


Outra melhoria seria eliminar as linhas em branco do arquivo (caso existam) com o comando

$cat agenda |grep -v -E '(^[ ]*#|^$)'

que retornaria:

augusto:1234-4567
caio:5581-6582
fabio:2563-9854
fulado: 555-5555 # nao sei quem é
sicrano:66-66-66-66 # conheci ontem






5. Re: Grep -v

Enzo
EnzOo

(usa Debian)

Enviado em 10/05/2007 - 14:00h

Dúvida
Estou revivendo o tópico, pois me deparei com um problema.
Quando eu do o grep ele mostra:
7 14018810085191107
eu gostaria de retornar somente do 140 adiante
Existe uma forma de fazer isso ?


6. Re: Grep -v

Enzo
EnzOo

(usa Debian)

Enviado em 10/05/2007 - 16:16h

Todos os Detalhes
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5024&pagina=2
Eu usei o camando assim:
cat novos/".$arquivo." | grep 140188100 | cut -c4- > processados/OK-".$arquivo;

Assim, ele filtro todas as linhas que existia 140188100 e recortou apartir da 4 coluna em diante.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts