Duvida usando SED

1. Duvida usando SED

Antonio Cesario
zurczurc

(usa Debian)

Enviado em 23/06/2017 - 02:31h

Caros colegas estou com uma duvida na utilização do SED utilizando variáveis. por exemplo sed "/Thu Jun 22/,$!d" sys_teste.log > emma
nesse exemplo estou pedindo para o SED achar dentro do arquivo sys_teste.log essa data Thu Jun 22 e a partir dela imprimir todo o conteúdo do arquivo depois da ocorrência dessa data no arquivo emma.
O arquivo sys_teste.log é um arquivo muito grande que tem varias datas de vários meses , mas preciso pegar todos os dados depois da primeira ocorrência dessa data. o exemplo dado a cima já faz isso. Mas como eu substituo a data por uma variável $Data do sistema : sed "/$Data/,$!d" sys_teste.log > emma isso não funciona e com aspas dupla da erro !!!

Alguem poderia dar uma ajuda ?

Obrigado


  


2. Re: Duvida usando SED

João Batista
ryuuzaki42

(usa Slackware)

Enviado em 23/06/2017 - 23:38h

Tente:

data="Thu Jun 22"
sed -n '/'"$data"'/,$p' sys_teste.log > emma

Flw



3. RE: Duvida usando SED

Antonio Cesario
zurczurc

(usa Debian)

Enviado em 24/06/2017 - 11:17h

Funcionou perfeitamente muito obrigado mesmo. Tenho uma amostra do arquivo emma que foi gerada.

1498287207 1 1 Sat Jun 24 06:53:27 2017 11003 4
TTTTM1 dcserver
dcsping.c 138
^MFailure to get DCM event: lost transport connection (114)
^MEN 161
^M^MSR 118
1498288402 0 1 Sat Jun 24 07:13:22 2017 2218714 4
TTTTM1 scn
SrxParamIF.m 284
^MNew Test Started
^MEN 118
^M^MSR 118
1498288404 0 1 Sat Jun 24 07:13:24 2017 2218714 4
TTTTM1 scn
SrxParamIF.m 284
^MNew Test Started
^MEN 118
^M^MSR 164
1498288404 1 1 Sat Jun 24 07:13:24 2017 2219940 1

Voce pode ver que é um arquivo todo complicado.
Depois de usar a solução proposta do SED que funcionou muito bem, ele gerou o arquivo emma com os dados da data do dia.
Depois eu uso o comando grep -c "New Test Started" emma > /tmp/mmm4 para contar a quantidade de palavras New Test Started que aparecem, então eu coloco em um arquivo chamado mmm4.
A palavra New Test Started aparece quando o sistema faz um teste, mas esse teste dura no minimo 18 minutos . Quando a palavra aparece novamente New Test Started em um tempo <= a 18 min é porque aconteceu um erro e o teste teve que ser refeito. Eu estou precisando contar todas as palavras New Test Started do arquivo emma mas somente aquelas palavras que indicam que o tempo entre um teste e outro é maior que 18 minutos, as palavras que aparecerem em um intervalo menor não podem ser contadas.
Alem disso para piorar as coisas as datas de inicio desses testes aparecem sempre na 4 linha depois da palavra que quero contar New Test Started.
Existe alguma maneira de fazer isso com SED ou algum script que resolva isso, tenho um conhecimento limitado do SED e script

Muito muito Obrigado Cesario.


4. Re: Duvida usando SED

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/06/2017 - 11:45h

Para mostrar tudo depois de uma determinada "palavra":
sed -ne '/palavra/,$ p' arquivo.txt 


Usando uma variável (vai depender do conteúdo da variável, mas se só contiver letras, então dá pra usar apenas aspas duplas)
var="palavra"
sed -ne "/$var/,$ p" arquivo.txt


Experimenta aí e dá um retorno.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts