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

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

Re: [shell-script] Extrair campos de tamanho fixo (problema com acentuaç


From: Tiago Peczenyj
Subject: Re: [shell-script] Extrair campos de tamanho fixo (problema com acentuação)
Date: Tue, 9 Oct 2012 11:53:45 -0300

Não é bug, provavelmente é uma variavel de ambiente relacionada ao conjunto
de caracteres (como LC_COLLATE, essas coisas) que esta diferente.

2012/10/9 Eri Ramos Bastos <address@hidden>

> **
>
>
> Interessante... Parece ser um bug.
>
> -- Ubuntu 10.4:
>
> [0.67][1141] ebastos:~$> echo 'aeiou'|gawk -v FIELDWIDTHS='1 2 2' -v
>
> OFS=',' '{$1=$1; print}'
> a,ei,ou
> [0.74][1141] ebastos:~$> echo 'aéiou'|gawk -v FIELDWIDTHS='1 2 2' -v
> OFS=',' '{$1=$1; print}'
> a,éi,ou
> [0.71][1142] ebastos:~$> gawk --version
> GNU Awk 3.1.8
> Copyright (C) 1989, 1991-2010 Free Software Foundation.
>
> -- CentOS 5.3
>
>
> $ echo 'aeiou'|gawk -v FIELDWIDTHS='1 2 2' -v OFS=',' '{$1=$1; print}'
> a,ei,ou
>
> $ echo 'aéiou'|gawk -v FIELDWIDTHS='1 2 2' -v OFS=',' '{$1=$1; print}'
> a,é,io
>
> $ gawk --version
> GNU Awk 3.1.5
> Copyright (C) 1989, 1991-2005 Free Software Foundation.
>
> 2012/10/9 rapha.couto <address@hidden>
>
>
> > Olá a todos.
> >
> > Estou criando um script o qual deve extrair os dados de um arquivo com
> > campos de tamanho fixo. Estava usando o gawk pra isso. O problema é que o
> > mesmo se confunde com campos com acentuação.
> >
> > $ echo 'aeiou'|gawk -v FIELDWIDTHS='1 2 2' -v OFS=',' '{$1=$1; print}'
> > a,ei,ou
> >
> > $ echo 'aéiou'|gawk -v FIELDWIDTHS='1 2 2' -v OFS=',' '{$1=$1; print}'
> > a,é,io
> >
> > Parece que ele está contando bytes e não caracteres e como os acentos
> > possuem 2 bytes o resultado não é o esperado. Eu tentei também o cut mas
> > mesmo com a opção de seleção por caracter não deu certo:
> > $ echo 'aeiou'|cut -b 2-3
> > ei
> >
> > $ echo 'aéiou'|cut -b 2-3
> > é
> >
> > $ echo 'aéiou'|cut -c 2-3 (esse deveria funcionar)
> > é
> >
> > A única solução que eu encontrei foi usar o sed:
> > $ echo 'aéiou'|sed 's/^.\{1\}\(.\{2\}\).*$/\1/'
> > éi
> >
> > Isso resolveu o meu problema. Entretanto, o problema é que essa solução é
> > extremamente mais lenta do que as primeiras e como o arquivo é grande, o
> > processo de extração está demorando muito. Alguém conhece uma solução
> mais
> > veloz?
> >
> > Desde já, obrigado!
> >
> >
> >
> > ------------------------------------
>
> >
> > ----------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação,
> como
> > perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> > prévio aviso.
> > ----------------------------------------------------------
> > Sair da lista: address@hidden
>
> > ----------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em
> > http://www.listas-discussao.cjb.net
> > ----------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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