Script com alteração de arquivo.txt via SED não roda duas vezes

1. Script com alteração de arquivo.txt via SED não roda duas vezes

Daniel Pires
defaux

(usa Outra)

Enviado em 19/10/2017 - 10:51h

Prezados,

Estou com um problema em um script que altera um arquivo.dat via SED, preciso rodar esse script varias vezes. A primeira rodada funciona perfeitamente, mas na segunda ele não altera o arquivo e não apresenta erro!

O script do SED, deveria pegar o mes e o NP e alterar para Mes +1 e NP -1, depois retira a linha do mês anterior da lista.

Script do SED

mes=$(sed -n '2p' set_encad.dat | cut -c 5-6)
nper=$(sed -n '3p' set_encad.dat | cut -c 5-6)

if [ $mes -lt 10 ];
then
mess=0$[$mes + 1]
else
mess=$[$mes + 1]
fi

if [ $nper -lt 10 ];
then
npers=0$[$nper - 1]
else
npers=$[$nper - 1]
fi

sed -i "2s/$mes/$mess/" set_encad.dat
sed -i "3s/$nper/$npers/" set_encad.dat
sed -i "/^$mes/d" set_encad.dat

Arquivo de Texto

####
MES:11
NP :02
####
mes xxsis1.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx
11 4381.00 3586.00 540.00 4946.00 16707.00 10119.00 3595.00 2197.00 104.00
12 8181.00 5546.00 1150.00 4869.00 29406.00 8436.00 9529.00 4939.00 118.00


Alguem tem uma luz no fim do tunel?


  


2. Re: Script com alteração de arquivo.txt via SED não roda duas vezes

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 19/10/2017 - 11:22h

Rodei o script aqui e "aparentemente" funcionou normal.
(se entendi bem o problema!)

$ cat arquivo 
####
MES:11
NP :02
####
mes xxsis1.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx
11 4381.00 3586.00 540.00 4946.00 16707.00 10119.00 3595.00 2197.00 104.00
12 8181.00 5546.00 1150.00 4869.00 29406.00 8436.00 9529.00 4939.00 118.00

$ bash script.sh

$ cat arquivo
####
MES:12
NP :01
####
mes xxsis1.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx
12 8181.00 5546.00 1150.00 4869.00 29406.00 8436.00 9529.00 4939.00 118.00

$ bash script.sh

$ cat arquivo
####
MES:13
NP :00
####
mes xxsis1.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx



3. Re: Script com alteração de arquivo.txt via SED não roda duas vezes

Daniel Pires
defaux

(usa Outra)

Enviado em 19/10/2017 - 11:31h

Engraçado, pelo CAT ARQUIVO funciona mesmo! eu estava abrindo o .DAT no notepad ++ e ele não tava alterando! vou fazer mais uns teste para ver se o programa completo roda!

Muito obrigado pela atenção


4. Re: Script com alteração de arquivo.txt via SED não roda duas vezes

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 19/10/2017 - 19:41h

defaux escreveu:

Prezados,

Estou com um problema em um script que altera um arquivo.dat via SED, preciso rodar esse script varias vezes. A primeira rodada funciona perfeitamente, mas na segunda ele não altera o arquivo e não apresenta erro!

O script do SED, deveria pegar o mes e o NP e alterar para Mes +1 e NP -1, depois retira a linha do mês anterior da lista.

Script do SED

mes=$(sed -n '2p' set_encad.dat | cut -c 5-6)
nper=$(sed -n '3p' set_encad.dat | cut -c 5-6)

if [ $mes -lt 10 ];
then
mess=0$[$mes + 1]
else
mess=$[$mes + 1]
fi

if [ $nper -lt 10 ];
then
npers=0$[$nper - 1]
else
npers=$[$nper - 1]
fi

sed -i "2s/$mes/$mess/" set_encad.dat
sed -i "3s/$nper/$npers/" set_encad.dat
sed -i "/^$mes/d" set_encad.dat

Arquivo de Texto

####
MES:11
NP :02
####
mes xxsis1.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx xxsis2.xxx xxsis3.xxx xxsis4.xxx xxsis5.xxx
11 4381.00 3586.00 540.00 4946.00 16707.00 10119.00 3595.00 2197.00 104.00
12 8181.00 5546.00 1150.00 4869.00 29406.00 8436.00 9529.00 4939.00 118.00
Alguem tem uma luz no fim do tunel?


Boa noite.
Testei aqui e funcionou . . .
Porem, notei que os dois condicionais, não tem efeito . . .
Altera se for "menor que 10" e também se não for . . . .
O comando abaixo, acrescenta "1" SE o mês for Menor que 12 ( evita MêS 13)
MESMAISUM=$(awk -F":" '/^MES/ {if($2<12) print ($2+1)}' set_encad.dat) 

Att.:
Marcelo Oliver








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts