[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Formatação de arquivo orientado a colunas (cut)
From: |
Salvador S. Scardua |
Subject: |
Re: Formatação de arquivo orientado a colunas (cut) |
Date: |
Thu, 11 May 2006 09:56:40 -0300 |
Funcionou Perfeitamente!
E pensar que perdi o sono lendo o man do cut, meu deus que desperdícil não ter
respeitado o awk do Kernighan & cia, não vou tirar seus créditos, vou manter
sua engine como está (com seu nome como autor) e a chamarei de dentro de meu
script mestre (awk -f scrawk entrada.dat), estou muito grato por ter me animado
em relação a programação de shellscript.
>Mensagem: 12
> Data: Thu, 11 May 2006 00:08:35 -0300
> De: Fabiano Caixeta Duarte <address@hidden>
> Assunto: Re: Formatação de arquivo orientado a colunas (cut)
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Salvador (da Pátria?),
>
>Em bash puro, só nosso amigo Júlio :) ( de preferência um one-liner )
>
>Em awk arrisquei um primeiro rascunho. Utilize o manual do awk (man awk)
>para entender o que eu fiz. Em caso de dúvidas, é só perguntar que eu
>esclarecerei.
>
>Detalhe importante: o script a seguir não trata a questão das linhas
>consecutivas contendo apenas descrição, conforme exemplo a seguir (fica
>para a segunda versão do script):
>> PG OSVALDO REF FRETE CFE
>> RECIBO
>
>Outra coisa, a construção /[0-9/]{10}/, ou seja, utilizando
>quantificadores "{}", insistiu em não funcionar aqui em casa... preciso
>descobrir por que. Por isto a ER meio troncha na linha 17.
>
>Divirta-se ;)
>
>##########
># Script #
>##########
>
>#!/usr/bin/awk -f
>
>BEGIN {
> FIELDWIDTHS="16 20 10 5 13 15"
>}
>
>function trim(str){
> gsub(/^[ ]+/,"",str)
> gsub(/[ ]+$/,"",str)
> return str
>}
>
>$1 ~ /^[^ ]/ {
> cod=$1
> gsub(/[ ]/,";",cod)
>}
>{
> if ($3 ~ /[0-3][0-9][/][0-1][0-9][/][0-9]/) {
> desc=$2
> data=$3
> trans=trim($4)
> negativo=trim($5)
> positivo=trim($6)
> }
> else {
> $1=""
> print cod,desc,data,trans" +"$0";"negativo";"positivo
> }
>}
>
>Abraços!
>
>Fabiano Caixeta Duarte
>Consultor em soluções para Redes de Computadores
>Linux User #195299
>Ribeirão Preto - SP
----------------------------------------
Salvador S. Scardua
Departamento de TI
Programador Junior
Pianna Com. Imp. Export. Ltda
27-3373 - 7527
address@hidden
address@hidden
---------------------------------------
[As partes desta mensagem que não continham texto foram removidas]