[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>
>
>