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

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

Re: [shell-script] Sed pode fazer isso?


From: aurelio
Subject: Re: [shell-script] Sed pode fazer isso?
Date: Thu, 10 Apr 2003 14:11:39 -0300 (ART)

ae evandro,

 --- Evandro Farias Rocha <address@hidden> escreveu: 
> Na verdade eu as coluna da tabela INEP sao apenas ilustrativas. A
> formatacao se da da seguinte forma: recebemos um manual do INEP com a
> codificacao para cada tabela a ser preenchida. Ex. tabela de
> matriculados, graduados, etc. Os codigos das celulas nao segue uma
> ordem cimetrica. veja um exemplo mais pratico.

ok.

> Tabela de alunos matriculados
> 10,20,30,40
> 50,60,70,80
> 90,100,110, ,
> 
> Tabela para o INEP
> C121=10,C122=20,C123=30,C124=40
> C121=50,C122=60,C123=70,C124=80
> C121=90,C122=100,C123=110,C120=NULL
> 
> Veja que cada coluna segue os mesmas mascaras. Outra coisa, caso nao
> exista valor na celula da tabela matriculado, o valor no INEP tem
> que ser mascara=NULL. Seria algo como: ao encontrar o delimitador
> adcione "C12.." ao valor da celula.

beleza, até aqui aquele script sed que te passei fazia, vamos
conferir:

$ cat lixo
10,20,30,40
50,60,70,80
90,100,110,

$ cat lixo | sed 's/, \+\(,\?\)/,9999\1/g; s/[0-9]*,\?/C12%=&/g;
s/%/1/;s//2/;s//3/;s//4/;s/9999/NULL/g'

C121=10,C122=20,C123=30,C124=40
C121=50,C122=60,C123=70,C124=80
C121=90,C122=100,C123=110,C124=NULL


beleza, tá igual o teu exemplo. vamos à explicação dos comandos

1. s/, \+\(,\?\)/,9999\1/g
2. s/[0-9]*,\?/C12%=&/g
3. s/%/1/ ; s//2/ ; s//3/ ; s//4/
4. s/9999/NULL/g

comando 1: serve para converter os campos vazios para 9999
comando 2: adiciona o C12%= antes de todos os números
comando 3: aqui os % são trocados por 1, 2, 3 e 4, sequencialmente
comando 4: troca os 9999 por NULL


> O complicado é que a cada coluna muda a mascara. Dai que
> talvel fosse possivel fazer um script para cada tabela do censo.

ai você pode colocar esse script sed dentro de um shell script
e usa variáveis no lugar do C12 pra mudar a máscara de acordo
com as necessidades. algo como:

#!/bin/sh

MASC='C12'
ARQUIVO="$1"

sed "
 s/, \+\(,\?\)/,9999\1/g;
 s/[0-9]*,\?/$MASC%=&/g;
 s/%/1/;s//2/;s//3/;s//4/; 
 s/9999/NULL/g" $ARQUIVO > tabela-$ARQUIVO.txt


falou!



=====
-- 
ATENCAO: o www.verde666.org  mudou-se  para   www.aurelio.net
ATTENTION: www.verde666.org is deprecated, use www.aurelio.net

_______________________________________________________________________
Yahoo! Mail
O melhor e-mail gratuito da internet: 6MB de espaço, antivírus, acesso POP3, 
filtro contra spam. 
http://br.mail.yahoo.com/


reply via email to

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