Boa Tarde a todos, estou utilizando o seguinte comando:
grep -m1 "SINTAXE" *.
Para imprimir a primeira linha com a ocorrência SINTAXE, ocorre que o termo SINTAXE aparece duas, três ou até quatro vezes no mesmo arquivo. Como faço para extrair uma linha específica, tipo apenas a segunda ocorrência ou apenas a terceira.
echo -e "teste1\ntste\nteste2\ntesdfg\nfdf\nteste3" | grep teste | sed -n '2p'
Onde o '2p' do sed representa a linha 2 que, no caso, como pega a saída do grep, se torna a segunda ocorrência.
--
-I've been talking to the main computer
-And...?
-It hates me
3. Re: Dúvidas Grep
Chininiusa Ubuntu
Post recolhido
Enviado em 11/08/2016 - 16:01h
thinomar escreveu:
echo -e "teste1\ntste\nteste2\ntesdfg\nfdf\nteste3" | grep teste | sed -n '2p'
Onde o '2p' do sed representa a linha 2 que, no caso, como pega a saída do grep, se torna a segunda ocorrência.
--
-I've been talking to the main computer
-And...?
-It hates me
Chinini escreveu:
Cara esse código funcionou bem, no entanto preciso fazer a mesma coisa para um conjunto extenso de arquivos, sendo que os mesmos não estão nomeados numericamente, você sabe se existe uma forma de fazer isso sem ter de usar grep "SINTAXE" | sed -n '2p' para cada um dos arquivos?
grato pela solução do primeiro problema
4. Re: Dúvidas Grep
thinomarusa Linux Mint
Post recolhido
Enviado em 11/08/2016 - 16:04h
Mas precisa ser sempre a mesma ocorrência? Por exemplo, precisa ser sempre a terceira ocorrência da palavra SINTAXE em qualquer arquivo?
--
-I've been talking to the main computer
-And...?
-It hates me
5. Re: Dúvidas Grep
Chininiusa Ubuntu
Post recolhido
Enviado em 11/08/2016 - 16:34h
Na verdade preciso extrair hora a segunda ocorrência, ora a terceira ocorrência da SINTAXE, o que eu desejo fazer é extrair, por exemplo, apenas a terceira ocorrência da SINTAXE de vários arquivos e de preferência colocar isso num único arquivo ou exibir isso na tela, e assim proceder depois para a terceira, quarta ocorrência. Acho que com esse exemplo fica mais fácil, tenho um conjunto de 10 arquivos .log e quanto uso o comando grep "EUMP2 = " so3_def.log aparece isso:
Ou seja ele imprimi apenas a primeira ocorrência da sintaxe UMP2 de cada arquivo .log. Resumindo o que pretendo fazer é o mesmo só que hora extraindo a segunda ocorrência, hora a terceira, hora a quarta ocorrência.
6. Re: Dúvidas Grep
msoliverusa Debian
Post recolhido
Enviado em 11/08/2016 - 18:58h
Chinini escreveu:
Na verdade preciso extrair hora a segunda ocorrência, ora a terceira ocorrência da SINTAXE, o que eu desejo fazer é extrair, por exemplo, apenas a terceira ocorrência da SINTAXE de vários arquivos e de preferência colocar isso num único arquivo ou exibir isso na tela, e assim proceder depois para a terceira, quarta ocorrência. Acho que com esse exemplo fica mais fácil, tenho um conjunto de 10 arquivos .log e quanto uso o comando grep "EUMP2 = " so3_def.log aparece isso:
Ou seja ele imprimi apenas a primeira ocorrência da sintaxe UMP2 de cada arquivo .log. Resumindo o que pretendo fazer é o mesmo só que hora extraindo a segunda ocorrência, hora a terceira, hora a quarta ocorrência.
Boa noite Chinini.
Verifique se é isso que deseja:
NN=2 #DEFINE A LINHA INICIAL
while ((NN<=4));do
for ARQ in $(ls -1 *.log);do
echo -e "ARQUIVO:$ARQ LINHA:$NN\n" >> SAIDA.txt
egrep 'EUMP2' $ARQ | sed -n ''$NN'p' >> SAIDA.txt
done
let NN++
done
No exemplo acima, vai "pegar" a 2ª, 3ª e 4ª OCORRÊNCIA de cada arquivo,
Caso queira "pegar" as linhas fora de ordem, tipo: 3, 1, 2, etc . . .
Faça as alterações:
Troque while ((NN<=4));do
Por for NN in 3 1 2;do
E EXCLUA "NN=2"
E let NN++
É Isso....
Se a resposta lhe ajudou, retribua, marcando a como A MELHOR.
Usamos cookies essenciais para manter o site funcionando e Google Analytics para métricas de audiência. Cookies de anúncios só serão carregados se você permitir.