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

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

Re: [shell-script] [OT] Concatenar aquivos


From: SuSE List
Subject: Re: [shell-script] [OT] Concatenar aquivos
Date: Tue, 11 Apr 2006 00:33:36 -0300
User-agent: Thunderbird 1.5 (Windows/20051201)

Rapaz!!!!
Era isso mesmo que eu queria!!!

Tiago, muito obrigado, resolveu meu problema...veja como ficou com 
algumas mudanças:

msp01:/home/vinicius/carga # l
total 30864
drwxr-xr-x   4 vinicius users     464 2006-04-11 00:25 ./
drwxr-xr-x  26 vinicius users    4112 2006-04-10 19:32 ../
-rw-r--r--   1 vinicius users 1368549 2006-04-11 00:24 003200604051.csv
-rw-r--r--   1 vinicius users 4889391 2006-04-11 00:24 006200603271.TXT
-rw-r--r--   1 vinicius users 4889391 2006-04-11 00:24 007200603271.TXT
-rw-r--r--   1 vinicius users 1507657 2006-04-11 00:24 009200604051.csv
-rw-r--r--   1 vinicius users 2431710 2006-04-11 00:24 009200604052.csv
-rw-r--r--   1 vinicius users 8750466 2006-04-11 00:24 011200604031.txt
-rw-r--r--   1 vinicius users 1407880 2006-04-11 00:24 012200604051.csv
-rw-r--r--   1 vinicius users 4889391 2006-04-11 00:24 013200603271.TXT
-rw-r--r--   1 vinicius users 1407880 2006-04-11 00:24 016200604051.csv
drwxr-xr-x   2 vinicius users     400 2006-04-11 00:24 bkp/
-rwxr-xr-x   1 vinicius users     338 2006-04-11 00:24 concatena.sh*
-rwxr-xr-x   1 vinicius users    4500 2006-04-04 20:35 pntmysqlloader.sh*
drwxr-xr-x   2 vinicius users     432 2006-04-11 00:24 processados/
msp01:/home/vinicius/carga # cat concatena.sh
#!/bin/bash
for ext in txt csv TXT CSV; do
   for parte in $(ls *.${ext} | cut -c1-11 | sort | uniq) ; do
   cat $(ls -X ${parte}[1-9].${ext}) > ${parte}0.${ext}
   var=$(ls -X ${parte}[1-9].${ext})
   for arquivo in $var ; do
     echo -e "movendo arquivo $arquivo para processados \n"
     mv $arquivo processados/
   done
   done
done
msp01:/home/vinicius/carga # ./concatena.sh
movendo arquivo 011200604031.txt para processados

movendo arquivo 003200604051.csv para processados

movendo arquivo 009200604051.csv para processados

movendo arquivo 009200604052.csv para processados

movendo arquivo 012200604051.csv para processados

movendo arquivo 016200604051.csv para processados

movendo arquivo 006200603271.TXT para processados

movendo arquivo 007200603271.TXT para processados

movendo arquivo 013200603271.TXT para processados

ls: *.CSV: No such file or directory
msp01:/home/vinicius/carga # l
total 30860
drwxr-xr-x   4 vinicius users     432 2006-04-11 00:26 ./
drwxr-xr-x  26 vinicius users    4112 2006-04-10 19:32 ../
-rw-r--r--   1 root     root  1368549 2006-04-11 00:26 003200604050.csv
-rw-r--r--   1 root     root  4889391 2006-04-11 00:26 006200603270.TXT
-rw-r--r--   1 root     root  4889391 2006-04-11 00:26 007200603270.TXT
-rw-r--r--   1 root     root  3939367 2006-04-11 00:26 009200604050.csv
-rw-r--r--   1 root     root  8750466 2006-04-11 00:26 011200604030.txt
-rw-r--r--   1 root     root  1407880 2006-04-11 00:26 012200604050.csv
-rw-r--r--   1 root     root  4889391 2006-04-11 00:26 013200603270.TXT
-rw-r--r--   1 root     root  1407880 2006-04-11 00:26 016200604050.csv
drwxr-xr-x   2 vinicius users     400 2006-04-11 00:24 bkp/
-rwxr-xr-x   1 vinicius users     338 2006-04-11 00:24 concatena.sh*
-rwxr-xr-x   1 vinicius users    4500 2006-04-04 20:35 pntmysqlloader.sh*
drwxr-xr-x   2 vinicius users     432 2006-04-11 00:26 processados/
msp01:/home/vinicius/carga # ls -l processados/
total 48412
drwxr-xr-x  2 vinicius users     432 2006-04-11 00:26 .
drwxr-xr-x  4 vinicius users     432 2006-04-11 00:26 ..
-rw-r--r--  1 vinicius users 1368549 2006-04-11 00:24 003200604051.csv
-rw-r--r--  1 vinicius users 4889391 2006-04-11 00:24 006200603271.TXT
-rw-r--r--  1 vinicius users 4889391 2006-04-11 00:24 007200603271.TXT
-rw-------  1 vinicius users 3834458 2006-04-04 21:32 009200603291.csv
-rw-r--r--  1 vinicius users 1507657 2006-04-11 00:24 009200604051.csv
-rw-r--r--  1 vinicius users 2431710 2006-04-11 00:24 009200604052.csv
-rw-r--r--  1 vinicius users 8750466 2006-04-11 00:24 011200604031.txt
-rw-r--r--  1 vinicius users 1407880 2006-04-11 00:24 012200604051.csv
-rw-r--r--  1 vinicius users 4889391 2006-04-11 00:24 013200603271.TXT
-rw-r--r--  1 vinicius users 1407880 2006-04-11 00:24 016200604051.csv
msp01:/home/vinicius/carga #

Acrescentei no lugar de TODOS o 0 (zero) e ficou perfeito dentro do meu 
outro script...

Assim em vez de ter dois arquivos (009200603291.csv ; 
009200604051.csv)ou mais, fiquei apenas com um único arquivo 
(009200604050.csv) com todos os dados!!!

Obrigado à todos que ajudaram.

[]s

Vinny



Tiago Barcellos Peczenyj escreveu:
> Acho que entendi
>
> Vamos pegar os codigos dos seus clientes + data a partir do cut e usar
> sort | uniq para deixar apenas um registro por codigo. Se eu pegar os
> caracteres das posições 1 a 11 eu pego todos os 'nomes' por assim
> dizer sem o caracter sequencial
>
> $ ls | cut -c1-11 | sort | uniq
> 00220060403
> 00220060406
> 00320060405
> 00620060327
> 00720060327
> 00920060405
> 01120060403
> 01220060405
> 01320060327
> 01620060405
>
> Agora o que vc pode fazer é o seguinte:
>
> $ for parte in $(ls *csv | cut -c1-11 | sort | uniq)
> do echo "Quem comeca por $parte sao $(ls -X ${parte}[0-9].csv)"
> done
>
> O for pega todos as primeiras partes que te interessam. Agora vamos
> usar isso como argumento para o cat e gerar um arquivo com TODOS
>
> $ for parte in $(ls *.csv | cut -c1-11 | sort | uniq)
> do cat $(ls -X ${parte}[0-9].csv) > ${parte}TODOS.csv
> done
>
> Ai vc vai dizer 'po eu tenho arquivos txt e csv, e agora ?' Ora... o
> que é problema para o linux e o bash ?
>
> $ for ext in txt csv
> for parte in $(ls *.${ext} | cut -c1-11 | sort | uniq)
> do cat $(ls -X ${parte}[0-9].${ext}) > ${parte}TODOS.${ext}
> done
> done
>
> Muito divertido, agora só falta vc criar um diretorio de backup e
> brincar a vontade, adaptando estas linhas para o seu problema em
> específico.
> On 4/10/06, SuSE List <address@hidden> wrote:
> >  Pessoal,
> >
> >  Boa tarde,
> >  Estou com uma situação um pouco inusitada aqui....tenho a seguinte
> >  listagem de arquivos:
> >
> >  Tem alguma forma ou lógica pra fazer em shell, a junção destes dois
> >  arquivos, tipo um `cat 009200604052.csv >> 009200604051.csv` 
> sabendo que
> >  eu posso ter mais do que dois arquivos, tipo 009200604053.csv e
> >  009200604054.csv (até um máximo de *9.csv) gerando ao final um "unico"
> >  arquivo: 009200604051.csv
> >
> >  Algumas informações sobre a nomeação dos arquivos:
> >
> >  1-3 => codigo de cliente, variavel
> >  4-11 => data (yyyymmdd), variavel em função do dia
> >  12-12 => sequencial de 0-9, variavel em função do excel
> >  14-16 => extensão (csv ou txt)
> --
> Tiago B Peczenyj
> Linux User #405772
>
> # cd /pub
> # more beer



[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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