Criar um arquivo a partir dos vários outros

1. Criar um arquivo a partir dos vários outros

Alvaro
alvarosoares

(usa Outra)

Enviado em 22/09/2015 - 10:45h

Olá Pessoal,

Ainda sou muito novato em Linux, e estou tendo que criar um shell script em que deve ser criado um arquivo (.TXT) a partir dos outros (.TXTs) que tiverem numa determinada pasta.

Ou seja, tenho "n" arquivos .txt num diretório (ex.: /arquivos ) e tenho que pegar o conteúdo de cada um e juntar num arquivo único (Ex.: meu_arquivo_unico.txt), sendo que, existem certas particularidades em cada um deles :

* Os arquivos obedecem a uma "ordem" e não são aleatórios, então eu tenho Arq_1.txt, Arq_2.txt, Arq_3.txt até Arq_n.txt sendo gerados;

* O primeiro deles tem um "cabeçalho" que são umas 40 linhas mais ou menos contendo algumas informações resumidas da leva de arquivos, o cabeçalho com os campos dos arquivos, começariam na linha 41 por exemplo. Então, somente pra esse arquivo, teria que pular 41 linhas;

* O restante dos arquivos (2, 3, 4 e etc) tem o seu cabeçalho começando na primeira linha e contém 1 linha, e somente essa deve ser ignorada.

Aí vem a pergunta, quais os comandos que posso usar nesse shell pra fazer um "merge" desses arquivos em um único (Ex.: meu_arquivo_unico.txt) pulando as linhas que preciso ? Só que não tenho a menor idéia de como fazer isso. Alguém poderia me ajudar ?

Obrigado.



  


2. Re: Criar um arquivo a partir dos vários outros

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 22/09/2015 - 14:34h

OLá,

Eu usaria os comandos for, sed, awk e paste. POste pfvr alguns exemplos de conteude desses arquivos ( use a tag code pfvr).

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


3. Re: Criar um arquivo a partir dos vários outros

Alvaro
alvarosoares

(usa Outra)

Enviado em 22/09/2015 - 16:41h

tonyhts escreveu:

OLá,

Eu usaria os comandos for, sed, awk e paste. POste pfvr alguns exemplos de conteude desses arquivos ( use a tag code pfvr).

abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---



Bem, os arquivos 2, 3, 4 em etc tem o seguinte formato :

campo1;campo2;campo3;campo4;campo5
AAAAA;BBBBBB;CCCCC;DDDDD;EEEEEE
GGGG;HHHHHH;LLLLLL;KKKKK;MMMMM
.............

Somente o arquivo 1 (Ex.: arq_1.txt) tem o seguinte formato :

cabeçalho_1
cabeçalho_2
cabeçalho_3
cabeçalho_4
<string de referência>
cabeçalho_6
......
cabeçalho_n
campo1;campo2;campo3;campo4;campo5
AAAAA;BBBBBB;CCCCC;DDDDD;EEEEEE
GGGG;HHHHHH;LLLLLL;KKKKK;MMMMM
.............

Então eu preciso, somente para o arq_1.txt, ler a partir da linha "AAAAA;BBBBBB;CCCCC;DDDDD;EEEEEE", e em outro arquivo, preciso preciso gravar arq_xpto.txt preciso "pinçar" a linha que contém "<string de referência>"


Abs












4. Re: Criar um arquivo a partir dos vários outros

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 22/09/2015 - 18:34h

Man acho qeu anda não entendi direito. O certo seria vc postar exemplo reais dos aqruivos, para que o script interprete de onde deve começar a ler, do contrário, terá que informar o numero da linha onde ele deve começão a ler...

VAmos lá:

OBS::: O script deve ser executado passando o arquivo matriz (no exemplo que deu, o arq_1.txt) como parâmetro. Por ex:
./script.sh arq_1.txt 


#!/bin/bash

# Script criado para resolver um problema do usário @alvarosoares do VOL.


# USO:
# O script deve ser executado passando como parâmetro
# o arquivo matriz (./script.sh arquivo_matriz.txt).
# Por exemplo:
# ./arqs.sh arq1.txt

# None do arquivo final gerado pelo script
arq_final='consolidado.txt'

#Para cada arquivo chamado arq{1..n}.txt, ignora a primeira linha e
#armazena o resto no arquivo final. CAso o arquivo seja a matriz,
#o script ira ignorar as primeiras 41 linhas.
for i in $(ls arq*.txt)
do
if
[ "$i" == "$1" ]
then
sed '41d' $i > $arq_final
else
sed '1d' $i >> $arq_final
fi
done

#Exibe o conteudo do arquivo gerado
cat $arq_final



abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


5. Re: Criar um arquivo a partir dos vários outros

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/09/2015 - 18:52h

Uma vez eu fiz uma coisa em AWK que me lembra um pouco o que você quer.

http://www.vivaolinux.com.br/script/Script-Para-Formatacao-de-Texto-Com-Cabecalho-Rodape-e-Campos-de...

Veja se tem a ver.

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts