Criar arquivos com base em conteúdo

1. Criar arquivos com base em conteúdo

Alvaro Iark
manobr

(usa Ubuntu)

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


  


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

Joao
stack_of

(usa Slackware)

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

Raimundo Alves Portela
rai3mb

(usa Outra)

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

Alvaro Iark
manobr

(usa Ubuntu)

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

Raimundo Alves Portela
rai3mb

(usa Outra)

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







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts