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

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

Re: [shell-script] Duvida Inserir variável condicional no grep


From: Sidney Souza
Subject: Re: [shell-script] Duvida Inserir variável condicional no grep
Date: Sun, 29 Jun 2014 13:52:52 -0300

Você ainda pode, para melhorar a performance, utilizar o fgrep ao invés do grep na resposta do Julio C. Neves.



2014-06-29 11:06 GMT-03:00 'Julio C. Neves' address@hidden [shell-script] <address@hidden>:
 

Uma forma para não complicar a RegExp:
DiasComZero={01..31}
DiasSemZero={1..31}
grep -iE "\bJun ( $DiasSemZeros|$DiasComZeros)\b"  arq.log | gzip --stdout >  novo.arq.log.$j.06.2014.gz

Uma forma complicando a RegExp:
grep -iE "\bJun ? (0?[1-9]|[12][0-9]|3[01])\b"  arq.log | gzip --stdout >  novo.arq.log.$j.06.2014.gz
Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 02 a 06/06
São Paulo 4Linux 21 a 25/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.



Em 29 de junho de 2014 02:39, Rodrigo Cunha address@hidden [shell-script] <address@hidden> escreveu:

 

Ola amigos, preciso de uma ajuda.
Estou montando um script para solucionar um problema que tenho com servidores compartilhados antigos.
Bom, a situação é a seguinte, tenho varios servers compartilhados, que não sou o admin, sou incumbido de "apagar incêndios" e um destes incêndios é que o conjunto de servidores nesta situação, muitas das vezes não possui o logrotate configurado e acaba gerando arquivos de log monstruosos com entradas de varias datas diferentes.Para sanar o meu problema estou bolando um script que faça o seguinte.
Leia o arquivo de log arq.log e a partir da leitura faça pequenos arquivos pertinentes as datas do incremento com a string novo.arq.log.stringdedata.gz ja compactando estes apagando , no termino da execução as linhas inseridas nestes novos arquivos deveriam ser apagadas do arquivo principal.

Notei que quando o script tenta executar a função em strings menores que 10 ele não funciona e gera arquivos vazios, frente a isso recriei o script abaixo com o novo grep para sanar, mas agora  os arquivos até são gerados mas não apresentam as entradas que desejo nem mesmo o processo secundario de remover as entradas do arquivo principal.
acredito que meu erro está basicamente aqui : grep -i '"Jun $j "\|"Jun  $j "'
As entradas padrão do meu arquivo de log são do padrão :
Jun 16 09:21:46 ...
Jun  9 16:21:18
assim inseri um espaço em branco na condicional or do grep

Segue abaixo o script :

#!/bin/bash

for i in {1..31}
do j=$i && cat  arq.log |grep -i '"Jun $j "\|"Jun  $j "' |gzip --stdout >  novo.arq.log.$j.06.2014.gz && sed -i '/^Jun '"$j"' /d'  arq.log
done


tambem tentei este :

do j=$i && cat  arq.log |grep -i 'Jun {$j} \|Jun  {$j} ' |gzip --stdout >  novo.arq.log.$j.06.2014.gz && sed -i '/^Jun '"$j"' /d'  arq.log
done

 

Alguém sabe como eu poderia proceder?


--
Atenciosamente,
Rodrigo Silva Cunha - RJ - São Gonçalo
Cel: +55 (0xx21) 7519-7375
e-mail : address@hidden

"Servo do Reino de Deus.
 Servo, do Rei e Líder  Jesus Cristo de Nazaré."




reply via email to

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