Retornar N linhas antes e M linhas depois do SED [RESOLVIDO]

1. Retornar N linhas antes e M linhas depois do SED [RESOLVIDO]

FABIO ATALA
fabioatala

(usa Ubuntu)

Enviado em 07/08/2013 - 16:53h

Pessoal, Boa Tarde,

Trago mais uma dúvida neste ilustre fórum.

sed -n '/${STRING}/{h;\${x;p;};d;};H;\${x;p;}' /caminho/ARQUIVO.txt" |head -n100;

O comando ACIMA busca a última ocorrência de uma string dentro do arquivo e pega as cem linhas posteriores a ocorrência desta string. Muito útil para ver um log em um determinado ponto.

Gostaria de saber, se tem como eu buscar as dez linhas de texto antes da STRING pesquisada e as 10 linhas depois?

Desde já agradeço.


  


2. Re: Retornar N linhas antes e M linhas depois do SED [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 07/08/2013 - 21:56h

precisa ser com sed?



3. Re: Retornar N linhas antes e M linhas depois do SED [RESOLVIDO]

Fernando
phoemur

(usa Debian)

Enviado em 07/08/2013 - 21:58h

Olha a gambiarra:


tac /caminho/ARQUIVO.txt | grep -A10 -B10 "${STRING}" | sed -e '1,/--/!d' -e '/--/d' | tac


Só com sed não sei fazer


4. Re: Retornar N linhas antes e M linhas depois do SED [RESOLVIDO]

FABIO ATALA
fabioatala

(usa Ubuntu)

Enviado em 08/08/2013 - 00:21h

Excelente,

Isto o que você fez resolve o que eu preciso e tem boa performance.

O mais perto que havia chegado era isto:
sed 'H;/${STRING}/{g;N;N;N;N;N;N;N;N;N;s/^\n//p;}; x;s/.*\(\(\n[^\n]*\)\{1\}\)/\1/;x ;d'

Apresenta uma linha antes da string e uma linha depois só que diferente do SED que abri o tópico ele pega todas as ocorrências das string e não somente a última como o seu GREP com SED faz muito bem.

Muito Obrigado mesmo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts