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

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

Awk em várias linhas ou sed...


From: Eduardo de Paula
Subject: Awk em várias linhas ou sed...
Date: Tue, 02 Oct 2007 20:47:27 -0000
User-agent: eGroups-EW/0.82

Boa tarde senhores,

estou enfrentando um problema pois tenho que converter um arquivo que
contem milhares de documentos dentro, para um outro formato.

O arquivo original é mais ou menos assim (coloquei o $ para
representar a quebra de linha):


 Document 1$
CDOC 759262$
TIPO ACM-SRDM-CO$
REG  200601801630$
DESC Descrição muito longa$
     com uma série de linhas$
     muitas linhas$
     muitas muitas$
DATA 20060622$
$
 Document 2$
...

A saida deve ser assim:

..ID_DOCUMENTO:$
SIGLA759262$
..TIPO_DOCUMENTO:$
ACM-SRDM-CO$
..DESCRICAO_DOCUMENTO:
Descrição muito longa$
com uma série de linhas$
muitas linhas$
muitas muitas$
..DATA_DOCUMENTO:$
22/06/2006$

..ID_DOCUMENTO:$



Eu tinha imaginado um sed assim:
 sed -e 's/Document [0-9]*//g;s/CDOC
\([0-9]*\)/..ID_DOCUMENTO:\n\1\n;s/TIPO
\([A-Z]*\)/..TIPO_DOCUMENTO:\n\1/g;s/REG
\([0-9]*\)/..PROCESSO:\n\1/g;s/CLAS \([A-Z]*\)/..CLASSE:\n\1
/g;s/DCLA/-/g;s/NUM/-/g;s/UF  *\([A-Z][A-Z]\)/..UF:\n\1/g;s/DECI
\([A-Z]*\)/..DECISAO:\n\1/g;s/DTDE
\([0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)/..DATA_DECISAO:\n\3\/\2\/\1\n..DATA_DECISAO_PESQ:\n\1\2\3/g;s/CORG
[A-Z]*[0-9]*//g;s/ORG \([A-Z]*\)/..ORGAO_JULGADOR:\n\1/g;s/INDE
\([A-Z]*[a-z]*\)/..INDEXACAO:\n\1/g;s/EMEN
\([A-Z]*[a-z]*\)/..EMENTA:\n\1/g;s/RELA \([A-Z]*\)/..RELATOR:\n\1/g;
s/FONT *\([A-Z]*\)/..FONTE_PUBLICACAO:\n\1/g; /^$/d; s/^ *//g;
s/PG:/PAGINA:/g' arquivo.txt

Ou entao um awk para jogar os campos para variaveis onde eu pudesse
tratar.. mas aí estou apanhando muito.

BEGIN { RS = "[^:UPPER:]" ; FNR = "Document [0-9]*" }
{
print "Campo 1:",$1
print "Campo 2:",$2
print "Campo 3:",$3
print "Campo 4:",$4
}


Alguma idéia mais simples?




reply via email to

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