shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Grep para pegar as linhas de cima


From: Breno Moiana
Subject: Re: [shell-script] Grep para pegar as linhas de cima
Date: Fri, 12 Sep 2008 09:49:14 -0300

Se você sempre tem a mesma quantidade de linhas para cada "bloco",
você pode usar o grep -B / grep -A

Pelo que entendi, voce quer as linhas <status>, <operation>, <target>
e <starttime> do bloco em que encontrar:

"

certo?

Se for esse o caso, tente algo como o abaixo (estou só com o grep do
AIX aqui, entao nao tenho como testar -A e -B, mas veja se funciona):

Isto deve te retornar os blocos inteiros, assumindo que eles sempre
tenham 13 linhas:
grep "<fullResult>RESP:0;</fullResult>" -A2 -B10  arquivo.log

E você pode colocar um | grep
"(<status>|<operation>|<target>|<starttime>)" para filtrar só o que
voce quer. (vai precisar de '\' pra escapar os caracteres especiais
ali, nao coloquei por questao de legibilidade)

Assim, um teste; não lembro se rpecisa escapar < e >, mas just in case, escapei:

$ grep "\<fullResult\>RESP:0;\<\/fullResult\>" -A2 -B10  arquivo.log |
grep "\(\<status\>\|\<operation\>\|\<target\>\|\<starttime\>\)"

Abraco!

Breno.
--
Por favor, não me mande powerpoint, correntes nem mensagens
pré-fabricadas. Eu vou apagar sem ler.
--
"Mac OS X. Because making UNIX user-friendly was easier than fixing Windows."
- unknown



2008/9/11 leo_caranguejeira <address@hidden>:
> Olá Pessoal,
>
> Estou me matando na solução de uma pesquisa com grep já faz um tempo.
> Gostaria de uma ajudinha, e desde já agradeço aos grandes
> conhecedores de sheell desta lista.
>
> Tenho um arquivo com o formato abaixo, de 1 G, o que eu preciso é
> grepar a linha "<status>" com o o resultado Resp:0 e pegar também as
> linhas "<operation>, <target> e <starttime> acima do status, o grep
> destas linhas forma um único comando.
> Resumindo, o grep do "<status>" mais as linhas acima forma um único
> comando, quero contar a quantidade de comandos com "<status>" Resp:0
> que estão aparecendo para cada comando.
>
> Bem, agradeço se alguém pode me ajudar.
>
> <log logid="82a9678d190809032359420284">
> <category>Upstream.CAI</category>
> <operation>Set</operation>
> <target>MHLRSUB</target>
> <instance>hlrSub.msisdn=551112345678</instance>
> <user>opsc_2</user>
> <context>sog.Oper_Create</context>
> <fullOperation>SET:HLRSUB:MSISDN,551112345678:CAMEL,SET,OCTDP,2,SK,2,C
> CH,2:CAMEL,SET,TCTDP,12,SK,4,CCH,2;</fullOperation>
> <starttime>20080903235942.784165</starttime>
> <stoptime>20080903235943.379073</stoptime>
> <fullResult>RESP:0;</fullResult>
> <status>SUCCESSFUL</status>
> </log>
> <log logid="82a9678d190809032359430288">
> <category>Upstream.CAI</category>
> <operation>Login</operation>
> <target>CAI</target>
> <instance></instance>
> <user>opsc_2</user>
> <context>sog.Oper_Create</context>
> <fullOperation>LOGIN:opsc_2:**********;</fullOperation>
> <starttime>20080903235943.392448</starttime>
> <stoptime>20080903235943.392662</stoptime>
> <fullResult>RESP:5000;</fullResult>
> <status>SUCCESSFUL</status>
> </log>
> <log logid="82a9678d190809032359430289">
> <category>Upstream.CAI</category>
> <operation></operation>
> <target>CAI</target>
> <instance></instance>
> <user>opsc_2</user>
> <context>sog.Oper_Create</context>
> <fullOperation>;</fullOperation>
> <starttime>20080903235943.463563</starttime>
> <stoptime>20080903235943.463855</stoptime>
> <fullResult>RESP:3001;Syntax Error;</fullResult>
> <status>FAILED</status>
> </log>
>
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]