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