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 <[EMAIL PROTECTED]>: > 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> > >
