[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?
- Awk em várias linhas ou sed...,
Eduardo de Paula <=