Pular para o conteúdo

Criar arquivos com base em conteúdo

Responder tópico
  • Denunciar
  • Indicar

1. Criar arquivos com base em conteúdo

Enviado em 01/03/2012 - 10:57h

Bom dia,

Tem como criar vários outros arquivos baseado no conteúdo de um primeiro?
Por exemplo, eu tenho um arquivo com pedidos de venda:
- 1 / Fulano / 100,00 / 01032012
- 2 / Ciclano / 50,00 / 01032012
- 3 / Beltrano / 200,00 / 01032012
- 4 / XXX / 888,88 / 01012020
Eu preciso "quebrar" em tantos arquivos quantos números de linhas, mas obedecendo a seguinte regra:
pedido.1.Fulano.txt
pedido.2.Ciclano.txt
pedido.3.Beltrano.txt
pedido.n.XXX.txt

Responder tópico

2. Re: Criar arquivos com base em conteúdo

Enviado em 01/03/2012 - 11:14h

O comando split pode fazer isso, mas não sei formatar a saída para renomear o arquivo de destino.

split --lines=1 arquivo 


Vai criar um arquivo para cada linha do arquivo original. Procure fazer isso em um diretório vazio, para não poluir.

3. Re: Criar arquivos com base em conteúdo

Enviado em 01/03/2012 - 11:34h

Fiz assim:


#!/bin/bash

while read LINHA
do
NOME=$(echo "$LINHA" | cut -d'/' -f2)
NUM=$(echo "$LINHA" | cut -d'/' -f1 | grep -o '[0-9]*')
touch "pedido.${NUM}.$NOME.txt"
done < arquivo

4. Re: Criar arquivos com base em conteúdo

Enviado em 02/03/2012 - 10:17h

Olá rai3mb,

O seu exemplo deu certo mas não preencheu os arquivos com o conteúdo correspondente.
Tem como fazer isso?
Ex.: o arquivo pedido.1.Fulano.txt fica com o conteúdo:
1 / Fulano / 100,00 / 01032012

5. Re: Criar arquivos com base em conteúdo

Enviado em 02/03/2012 - 12:02h

Tem sim ;-)


#!/bin/bash

while read LINHA
do
NOME=$(echo "$LINHA" | cut -d'/' -f2)
NUM=$(echo "$LINHA" | cut -d'/' -f1 | grep -o '[0-9]*')
echo "$LINHA" > "pedido.${NUM}.$NOME.txt"
done < arquivo

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder