Separar arquivos linha por linha [RESOLVIDO]

1. Separar arquivos linha por linha [RESOLVIDO]

Gabi
GabiS

(usa Ubuntu)

Enviado em 07/05/2017 - 15:23h

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2017 - 11:59h

Gabrieli escreveu:

msoliver escreveu:

Gabrieli escreveu:

msoliver escreveu:

Gabrieli escreveu:

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?


Boa tarde Gabrieli.
Poste um trecho do arquivo .dat
É necessário saber qual o "separador de campo" e o "separador de registro".

Para ler o arquivo, faça:
while read line;do
echo "$line"
done>arquivo.dat




Olá, o arquivo é assim:

0,00 0,00 188 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 202 23.00 24.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00


Eu gostaria de separar linha por linha e depois salvar cada linha entre chaves...

Estou tentando fazer com que os dados fiquem assim:

[
{ 0,00, 0,00, 188, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
.
.
.

],


Boa tarde Gabrieli, verifique se atende sua necessidade.
#!/bin/bash
echo "[" > SAIDA.txt
while IFS=" " read -a CMP;do
for ((x=0;x<${#CMP[@]};x++));do
((x==0)) && echo -n "{${CMP[$x]}, " >> SAIDA.txt
((x>0&&x<4)) && echo -n "${CMP[$x]}, " >> SAIDA.txt
((x==4)) && echo "${CMP[$x]}}," >> SAIDA.txt
done

done<arquivo
echo "]," >> SAIDA.txt

Copie o script acima, cole no editor de textos, salve-o, depois de permissão de execução (chmod +x script.sh),
onde script.sh é o nome que foi dado . . .
Para executar, faça:
./script.sh
É gerado o arquivo SAIDA.txt com o resultado.


Só "SED"
sed 's/ /, /g' arquivo|sed 's/^/\{/;s/$/\},/'|sed '1i\['|sed '$a ],' 

Se a resposta foi esclarecedora, marque o TóPICO como resolvido.
E se, gostou da minha RESPOSTA, marque-a como A MELHOR .


Att.:
Marcelo Oliver



Oi Marcelo! Obrigada pela ajuda
Fiz esse script que você indicou mas, deu erro :(

Porém, usei aquele primeiro que você fez e ficou assim:

#!/bin/bash
INPUT_FILE="1-sp-C-hardware.dat" ;
cat $INPUT_FILE | while read line
do
echo "{$line},"
done >> dados.txt

Deu certo, a saída está assim:

{0,00 0,00 188 23.00 24.00},
{0,00 0,00 204 23.00 24.00},
{0,00 0,00 204 23.00 24.00},
{0,00 0,00 202 23.00 24.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
.
.
.

Agora eu gostaria de escrever umas coisas antes de cada número, assim:

{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
e assim por diante...

Sabe como eu poderia fazer isso?

Boa tarde Gabrieli.
No seu exemplo anterior, o IFS=", "
Da forma mostrada agora, é bem mais simples . . .
Se entendi corretamente, a solução é:
awk '{printf "{CPU: %s CPU: %s Memoria: %s Energia: %s Power: %s},\n" ,$1,$2,$3,$4,$5}' INPUT-FILE.txt >> SAIDA.txt 

cat SAIDA.txt
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 202 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 24.00 Power: 25.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 24.00 Power: 25.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 24.00 Power: 25.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 24.00 Power: 25.00},
{CPU: 0,00 CPU: 0,00 Memoria: 204 Energia: 24.00 Power: 25.00},
.
.
.

Att.:
Marcelo Oliver

3. Re: Separar arquivos linha por linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 07/05/2017 - 15:50h

Gabrieli escreveu:

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?


Boa tarde Gabrieli.
Poste um trecho do arquivo .dat
É necessário saber qual o "separador de campo" e o "separador de registro".

Para ler o arquivo, faça:
while read line;do
echo "$line"
done>arquivo.dat


4. Re: Separar arquivos linha por linha [RESOLVIDO]

Gabi
GabiS

(usa Ubuntu)

Enviado em 08/05/2017 - 11:07h

Gabrieli escreveu:

msoliver escreveu:

Gabrieli escreveu:

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?


Boa tarde Gabrieli.
Poste um trecho do arquivo .dat
É necessário saber qual o "separador de campo" e o "separador de registro".

Para ler o arquivo, faça:
while read line;do
echo "$line"
done>arquivo.dat






Olá, o arquivo é assim:

0,00 0,00 188 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 202 23.00 24.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00


Eu gostaria de separar linha por linha e depois salvar cada linha entre chaves...


5. Re: Separar arquivos linha por linha [RESOLVIDO]

Gabi
GabiS

(usa Ubuntu)

Enviado em 08/05/2017 - 11:35h

msoliver escreveu:

Gabrieli escreveu:

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?


Boa tarde Gabrieli.
Poste um trecho do arquivo .dat
É necessário saber qual o "separador de campo" e o "separador de registro".

Para ler o arquivo, faça:
while read line;do
echo "$line"
done>arquivo.dat




Olá, o arquivo é assim:

0,00 0,00 188 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 202 23.00 24.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00


Eu gostaria de separar linha por linha e depois salvar cada linha entre chaves...

Estou tentando fazer com que os dados fiquem assim:

[
{ 0,00, 0,00, 188, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
.
.
.

],



6. Re: Separar arquivos linha por linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/05/2017 - 15:46h

Gabrieli escreveu:

msoliver escreveu:

Gabrieli escreveu:

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?


Boa tarde Gabrieli.
Poste um trecho do arquivo .dat
É necessário saber qual o "separador de campo" e o "separador de registro".

Para ler o arquivo, faça:
while read line;do
echo "$line"
done>arquivo.dat




Olá, o arquivo é assim:

0,00 0,00 188 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 202 23.00 24.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00


Eu gostaria de separar linha por linha e depois salvar cada linha entre chaves...

Estou tentando fazer com que os dados fiquem assim:

[
{ 0,00, 0,00, 188, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
.
.
.

],


Boa tarde Gabrieli, verifique se atende sua necessidade.
#!/bin/bash
echo "[" > SAIDA.txt
while IFS=" " read -a CMP;do
for ((x=0;x<${#CMP[@]};x++));do
((x==0)) && echo -n "{${CMP[$x]}, " >> SAIDA.txt
((x>0&&x<4)) && echo -n "${CMP[$x]}, " >> SAIDA.txt
((x==4)) && echo "${CMP[$x]}}," >> SAIDA.txt
done

done<arquivo
echo "]," >> SAIDA.txt

Copie o script acima, cole no editor de textos, salve-o, depois de permissão de execução (chmod +x script.sh),
onde script.sh é o nome que foi dado . . .
Para executar, faça:
./script.sh
É gerado o arquivo SAIDA.txt com o resultado.


Só "SED"
sed 's/ /, /g' arquivo|sed 's/^/\{/;s/$/\},/'|sed '1i\['|sed '$a ],' 

Se a resposta foi esclarecedora, marque o TóPICO como resolvido.
E se, gostou da minha RESPOSTA, marque-a como A MELHOR .


Att.:
Marcelo Oliver



7. Re: Separar arquivos linha por linha [RESOLVIDO]

Gabi
GabiS

(usa Ubuntu)

Enviado em 09/05/2017 - 11:12h

msoliver escreveu:

Gabrieli escreveu:

msoliver escreveu:

Gabrieli escreveu:

Olá, tenho um arquivo .dat com 4 colunas e muitas linhas e gostaria de ler esse arquivo e separá-lo linha a linha através de um shell script.

Alguem pode me ajudar ?


Boa tarde Gabrieli.
Poste um trecho do arquivo .dat
É necessário saber qual o "separador de campo" e o "separador de registro".

Para ler o arquivo, faça:
while read line;do
echo "$line"
done>arquivo.dat




Olá, o arquivo é assim:

0,00 0,00 188 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 204 23.00 24.00
0,00 0,00 202 23.00 24.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 24.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00
0,00 0,00 204 25.00 25.00


Eu gostaria de separar linha por linha e depois salvar cada linha entre chaves...

Estou tentando fazer com que os dados fiquem assim:

[
{ 0,00, 0,00, 188, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
{ 0,00, 0,00, 204, 23.00, 24.00 },
.
.
.

],


Boa tarde Gabrieli, verifique se atende sua necessidade.
#!/bin/bash
echo "[" > SAIDA.txt
while IFS=" " read -a CMP;do
for ((x=0;x<${#CMP[@]};x++));do
((x==0)) && echo -n "{${CMP[$x]}, " >> SAIDA.txt
((x>0&&x<4)) && echo -n "${CMP[$x]}, " >> SAIDA.txt
((x==4)) && echo "${CMP[$x]}}," >> SAIDA.txt
done

done<arquivo
echo "]," >> SAIDA.txt

Copie o script acima, cole no editor de textos, salve-o, depois de permissão de execução (chmod +x script.sh),
onde script.sh é o nome que foi dado . . .
Para executar, faça:
./script.sh
É gerado o arquivo SAIDA.txt com o resultado.


Só "SED"
sed 's/ /, /g' arquivo|sed 's/^/\{/;s/$/\},/'|sed '1i\['|sed '$a ],' 

Se a resposta foi esclarecedora, marque o TóPICO como resolvido.
E se, gostou da minha RESPOSTA, marque-a como A MELHOR .


Att.:
Marcelo Oliver



Oi Marcelo! Obrigada pela ajuda
Fiz esse script que você indicou mas, deu erro :(

Porém, usei aquele primeiro que você fez e ficou assim:

#!/bin/bash
INPUT_FILE="1-sp-C-hardware.dat" ;
cat $INPUT_FILE | while read line
do
echo "{$line},"
done >> dados.txt

Deu certo, a saída está assim:

{0,00 0,00 188 23.00 24.00},
{0,00 0,00 204 23.00 24.00},
{0,00 0,00 204 23.00 24.00},
{0,00 0,00 202 23.00 24.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
{0,00 0,00 204 24.00 25.00},
.
.
.

Agora eu gostaria de escrever umas coisas antes de cada número, assim:

{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
{CPU: 0,00 CPU: 0,00 Memoria: 188 Energia: 23.00 Power: 24.00},
e assim por diante...

Sabe como eu poderia fazer isso?






8. Re: Separar arquivos linha por linha [RESOLVIDO]

Gabi
GabiS

(usa Ubuntu)

Enviado em 09/05/2017 - 14:36h

Obrigada Marcelo! Deu certinho! Obrigada mesmo :)


9. Re: Separar arquivos linha por linha [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2017 - 16:07h

Gabrieli escreveu:

Obrigada Marcelo! Deu certinho! Obrigada mesmo :)


Por nada, precisando . . . .
Agradeço pela "melhor resposta".

mso







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts