stremer
(usa Arch Linux)
Enviado em 02/04/2009 - 10:08h
na verdade mesmo... o -A é para encontrar a ocorrência de balão e mostrar X linhas a partir dali.
Como queremos mostrar tudo que vem depois da li, poderiamos usar qualquer valor acima do total de palavras, por ex:
abacate
abacaxi
bala
balão
carro
casa
escola
faca
Temos total de 8 linhas, a palavra balão esta na quarta linha então poderiamos usar grep -A "balão" 5, ou seja para mostrar 5 ocorrência (que mostrariamos todas as ocorrências do arquivo). Só que se passarmos qualquer valor maior que isso tbem funcionará, afinal quando chegar no fim do arquivo ele não irá mostrar mais nada, por este motivo contamos o total de linhas do arquivo antes, senão teriamos que fazer uma conta a mais a toa... O awk é somente para usar o total anteriormente, poderia ser resumido assim:
grep -A `cat palavras.txt | wc -l` "balão" palavras.txt
Poderia ser feito de diversas formas... na verdade o awk foi mais para ficar facil entender, primeiro faz uma coisa e depois outra, mas ele é usado mais para tratar mesmo o conteudo do texto (substring, concatenação, etc)
uma coisa legal seria:
grep -A `cat palavras.txt | wc -l` "balão" palavras.txt
| awk '{print toupper($1)}'
Para imprimir maiuscula.
Melhor ainda... que tal fazer algo ordenado, em um arquivo desordenado:
Imagine ainda que este arquivo tem mistura de maiusculas e minusculas... podemos procurar sem considerar o case sensitive, procurando tudo em maiuscula.
cat palavras.txt | awk '{print toupper($1)}' | sort | grep -A `cat palavras.txt | wc -l` "BALÃO"
Como tudo no shell a imaginação é o limite...
PS: Uso muito pouco shell no meu dia a dia, digo que sou 95 % do tempo programador java e 5% do tempo programador C... não lembrava do -A do grep por isso no começo não lembrei de uma solução legal... ai o amigo wolfs... clareou as ideias...
Espero que tenham entendido tudo agora!!!!