A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

1. A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

Caio Rodrigo Biló
caiobilo

(usa Outra)

Enviado em 26/12/2018 - 18:18h

Boa tarde pessoal, estou tentando criar um script que a partir de um diretório com vários arquivos faça uma leitura de arquivo por arquivo .csv e na leitura rode um awk que criei que insere um valor fixo. Depois disso mova o arquivo para outra pasta. Ou então pode ser criar outro arquivo só que com a linha alterada e em outra pasta.
Já tentei com For mas até agora não consegui o resultado esperado. Conseguem me ajudar?

Segue exemplo do que fiz:

Neste exemplo não executei a questão de mover o arquivo pois não estou conseguindo fazer funcionar.

#!/bin/bash +x

cd /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2

file="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/*"
total=100

if [$file ! 0] then

for ((a=1; a<$total; a++))

do

while IFS= read line
do

awk -F"|" '{OFS="||";print $1,$3,$5,$7,$9,$11,$13,$15,$17,$19,$21,$23,$25,$27,$29,$31,$33,$35,$37,$39,$41,"20181130000000",$4
5,$47,$49,$51,$53,$55,$57,$59,$61,$63,$65,$67,$69,$71,$73,$75,$77,$79,$81,$83,$85,$87,$89,$91,$93,$95,"familygama@hotmail.com
",$99,$101,$103;}'

done <"$file"

done

fi


  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 26/12/2018 - 20:28h

caiobilo escreveu:
Boa tarde pessoal, estou tentando criar um script que a partir de um diretório com vários arquivos faça uma leitura de arquivo por arquivo .csv e na leitura rode um awk que criei que insere um valor fixo. Depois disso mova o arquivo para outra pasta. Ou então pode ser criar outro arquivo só que com a linha alterada e em outra pasta.
Já tentei com For mas até agora não consegui o resultado esperado. Conseguem me ajudar?


v aí um exemplo e se rola de adaptar ao que vc deseja

for x in `ls *.csv`;do
echo "Texto inserido no arquivo" >> $x
mv $x /outro_lugar/$x
done


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


3. Re: A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

Caio Rodrigo Biló
caiobilo

(usa Outra)

Enviado em 27/12/2018 - 09:15h

Mauriciodez escreveu:

caiobilo escreveu:
Boa tarde pessoal, estou tentando criar um script que a partir de um diretório com vários arquivos faça uma leitura de arquivo por arquivo .csv e na leitura rode um awk que criei que insere um valor fixo. Depois disso mova o arquivo para outra pasta. Ou então pode ser criar outro arquivo só que com a linha alterada e em outra pasta.
Já tentei com For mas até agora não consegui o resultado esperado. Conseguem me ajudar?


v aí um exemplo e se rola de adaptar ao que vc deseja

for x in `ls *.csv`;do
echo "Texto inserido no arquivo" >> $x
mv $x /outro_lugar/$x
done


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Mauriciodez obrigado pela ajuda. Esta maneira que fez fica bem mais facil.
Agora estou com problema no meu awk, rodando ele separado funciona perfeitamente, porém quando coloco debaixo do for da os seguintes erros

awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: 5,$47,$49,$51,$53,$55,$57,$59,$61,$63,$65,$67,$69,$71,$73,$75,$77,$79,$81,$83,$85,$87,$89,$91,$93,$95,"xxxxxxx",$99,$101,$103;}
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: 5,$47,$49,$51,$53,$55,$57,$59,$61,$63,$65,$67,$69,$71,$73,$75,$77,$79,$81,$83,$85,$87,$89,$91,$93,$95,"xxxxxxx",$99,$101,$103;}

O código ficou assim agora

#!/bin/bash +x

cd /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2

x="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/"

for x in 'ls UF_ACCOUNT_0*';do

awk -F"|" '{OFS="||";print $1,$3,$5,$7,$9,$11,$13,$15,$17,$19,$21,$23,$25,$27,$29,$31,$33,$35,$37,$39,$41,"20181130000000",$4
5,$47,$49,$51,$53,$55,$57,$59,$61,$63,$65,$67,$69,$71,$73,$75,$77,$79,$81,$83,$85,$87,$89,$91,$93,$95,"xxxxxxx",$99,$101,$103;}' >> "$x"

cp $x /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/BKP/

done


4. Re: A partir de uma lista de arquivos alterar e mover

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 27/12/2018 - 10:47h

a principio seu awk não tem origem, por isso o erro .

veja só esse exemplo

#!/bin/bash
ODIR="teste"
DDIR="teste1"
for x in `ls $ODIR/*.txt | cut -d'/' -f2`;do
cat $ODIR/$x | awk '{print $3}' > $DDIR/$x
done


ODIR = Diretório de Origem
DDIR = Diretório de Destino
ls $ODIR/*.txt | cut -d'/' -f2 = Filtro para pegar só o nome do arquivo
cat $ODIR/$x | awk '{print $3}' > $DDIR/$x = pega o arquivo 'x' no diretório de origem, extrai a 3ª coluna e direciona para um novo arquivo com mesmo nome para o diretório de destino.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



5. Re: A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

Caio Rodrigo Biló
caiobilo

(usa Outra)

Enviado em 27/12/2018 - 11:29h

Mauriciodez escreveu:

a principio seu awk não tem origem, por isso o erro .

veja só esse exemplo

#!/bin/bash
ODIR="teste"
DDIR="teste1"
for x in `ls $ODIR/*.txt | cut -d'/' -f2`;do
cat $ODIR/$x | awk '{print $3}' > $DDIR/$x
done


ODIR = Diretório de Origem
DDIR = Diretório de Destino
ls $ODIR/*.txt | cut -d'/' -f2 = Filtro para pegar só o nome do arquivo
cat $ODIR/$x | awk '{print $3}' > $DDIR/$x = pega o arquivo 'x' no diretório de origem, extrai a 3ª coluna e direciona para um novo arquivo com mesmo nome para o diretório de destino.

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Obrigado Mauriciodez pela ajuda, seguindo sua linha de raciocinio fiz de uma outra maneira que funcionou perfeitamente. Antes eu tinha implementado um while depois do for porem a performance ficou mto ruim, pois o arquivo tem milhoes de linhas.

#!/bin/bash +x

cd /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2

ODIR="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/"
DDIR="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/BKP"

for x in `ls UF_ACCOUNT_0*`;do


awk -F"|" '{OFS="||";print $1,$3,$5,$7,$9,$11,$13,$15,$17,$19,$21,$23,$25,$27,$29,$31,$33,$35,$37,$39,$41,"20181130000000",$45,$47,$49,$51,$53,$55,$57,$59,$61,$63,$65,$67,$69,$71,$73,$75,$77,$79,$81,$83,$85,$87,$89,$91,$93,$95,"xxxxxxx",$99,$101,$103;}' $ODIR/$x >> "$DDIR/$x"


#cp $x /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/BKP/

done




6. Re: A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 27/12/2018 - 11:39h

caiobilo escreveu:

#!/bin/bash +x
cd /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2

ODIR="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/"



se vc faz questão de usar o 'cd', pelo menos use a variável que já está pronta

ODIR="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/"
cd $ODIR


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



7. Re: A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

Caio Rodrigo Biló
caiobilo

(usa Outra)

Enviado em 27/12/2018 - 11:50h

Mauriciodez escreveu:

caiobilo escreveu:

#!/bin/bash +x
cd /beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2

ODIR="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/"



se vc faz questão de usar o 'cd', pelo menos use a variável que já está pronta

ODIR="/beatrix/pcenter/infa_shared/teste/TgtFiles/Caio/ACCOUNT_2/"
cd $ODIR


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Ah não, deixei ele comentado pq nao to usando.. só esqueci de apagar ele do código.

Vlw!



8. Re: A partir de uma lista de arquivos alterar e mover [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 27/12/2018 - 12:48h

.
.
Tranquilo ... então se não há mais dúvidas/problemas, marque seu tópico como "resolvido" e depois assinale uma "melhor resposta".

Se ainda há dúvidas, da o grito aí !!!

Abçs

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts