[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Ajuda na saída do resulta no script
From: |
MrBiTs |
Subject: |
Re: [shell-script] Ajuda na saída do resulta no script |
Date: |
Tue, 05 Aug 2014 16:50:31 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
On 08/05/2014 01:44 PM, Bezaleel Ramos address@hidden [shell-script] wrote:
>
>
> Galera,
>
> Estou precisando de uma ajuda com relação a um script que estou criando, quem
> poder me ajudar
>
> Só para esclarecer, criei um arquivo com a seguintes informações:
>
> # dir_oracle.txt
> /global/dba_producao/trace/oradwh/diag/rdbms/oradwh/oradwh1/trace/alert_oradwh1.log
>
> /global/dba_producao/trace/orapef/diag/rdbms/orapef/orapef1/trace/alert_orapef1.log
>
> O script esta da seguinte forma:
>
> #!/bin/ksh Dir=/home/bramos/dir_oracle.txt File=$(cut -d'/' -f11 $Dir)
> Format=`date +%b\ \%d\ \%H:..:..\ \%Y` Ora=$1
>
> while read Dir; do find $Dir -mtime +15 | grep -i "$File" | tail -100 |sort
> -u | grep -iv "$Format"| grep -i $Ora if [ $?
> -eq 0 ] then echo "$Ora on file $Dir" else
>
> echo "$Ora is not search on dir $Dir"
>
> fi done < $Dir
>
> O meu problema esta no echo(eu acho), pois queria informar somente o arquivo
> e não o diretório, por exemplo:
>
> ORA-06512 is not search on file alert_oradwh1.log ORA-06512 is not search on
> file alert_orapef1.log
>
>
> Quando altero no echo para "*echo "$Ora on file $File"* tenho o seguinte
> resultado:
>
> ORA-06512 is not search on file alert_oradwh1.log alert_orapef1.log ORA-06512
> is not search on file alert_orapef1.log
> alert_oradwh1.log
E ae Beza? Tanto tempo comigo e não aprendeu nada? Isso denota um mau mestre :)
O problema está no fato de que há mais de uma ocorrência no arquivo, criando
assim uma lista. Se você faz File=$(cut -d'/' -f11
$Dir), na verdade você está cortando todos os elementos da lista dir_oracle.txt
e jogando para a lista $File. Então, $File vale:
alert_oradwh1.log
alert_orapef1.log
O que você precisa fazer é iterar $Dir e aplicar o cut para cada elemento dele,
assim:
for Dir_interno in $(cat $Dir); do
File=$(echo $Dir_interno | cut -d'/' -f11)
...
done
Para efeito de otimização, faça assim:
File=${Dir_interno##*/}
Abraço
- --
echo
920680245503158263821824753325972325831728150312428342077412537729420364909318736253880971145983128276953696631956862757408858710644955909208239222408534030331747172248238293509539472164571738870818862971439246497991147436431430964603600458631758354381402352368220521740203494788796697543569807851284795072334480481413675418412856581412376640379241258356436205061541557366641602992820546646995466P
| dc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBCAAGBQJT4TWHAAoJEG7IGPwrPKWrQpkH/1bpTyD0DyQvcXDxkRfu7bN8
tw7bflOyPBTjLZDePXKzzDPJT94RqSGRiu00xqFOTLX9nCF8gH0AZQU4sVQBRQJO
sY8pQwYG7pCOGA3qCpIEppkIrFOaCPa/eHHhQftZ18jlNCRK0zIeHuVyUVUcuMUZ
aDE5ijzQ7TEw2v/7ato7fINUVoLqRBONzZsT80Uu/+Hf8AvjusAYJ5OnllZapIlC
UGrE++i/bDRWIRQAgJNbcWddCasZn6xxWlqHmz0odIffxMQplPGTQDEdPqLCAy2z
lhoPiAe1Dl7XvcudpmqGGAcaDcLcCVGnO3IO+cMLX7RUi/GQridGH3Tb62MXk+Q=
=YAw3
-----END PGP SIGNATURE-----