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

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

Re: [shell-script] Problema com gre e acentos


From: Tiago Peczenyj
Subject: Re: [shell-script] Problema com gre e acentos
Date: Mon, 3 Jun 2013 08:41:41 -0300

Ola

O grande problema de vc trabalhar com letras acentuadas é que nem sempre
elas são um caracter.

Por exemplo á pode ser representado, em unicode, de duas formas diferentes:
uma é o "a minusculo com acento agudo" e o outro é o "a minusculo SEGUIDO
de acento agudo". Isso pq vc pode combinar alguns acentos e a conversa vai
longe. Ai vc pergunta: o á que eu estou usando é qual? depende do editor de
texto que vc esta usando.

Por isso existem as normalizações  NFC, NFD, NFKC, NFKD do unicode. Isso
falando apenas de unicode (vulgo utf-8).

esta apresentação pode ser util.:

http://prezi.com/q2ewovss1aui/unicode-e-utf-8/

Voltando ao seu problema

No meu ambiente eu tenho estas variaveis:
LANG=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_TIME=en_US.UTF-8

Veja só:
$ grep -q "ã" <<< "ação" && echo achei || echo nao achei
achei
$ grep -q "á" <<< "ação" && echo achei || echo nao achei
nao achei

o grep -q é o modo "quiet" ou silencioso, otimo para usar em um if.

o <<< eh o chamado here strings. é um atalho para

grep xxx <( echo "string" )

parecido com

echo "string" | grep xxx

(porem o grep não é executado apos o pipe, isso é util em alguns casos
envolvendo variaveis de ambiente, etc)

Espero ter ajudado.



2013/6/2 nerobarrabas <address@hidden>

> **
>
>
> Pessoal,
>
> Meu arquivo.txt contem a linha abaixo:
>
> Belem do Pará
>
> Estou fazendo um script para pegar linhas que contêm a string "á" e/ou "B"
>
> Fiz assim:
> #!/bin/bash
> cat arquivo.txt |
> while read linha; do
> if [ "$(echo $linha | grep 'á|à|ã|Á|À|Ã|é|è|ä|É|í|Í|ó|Ó|ú|Ú')" ];
> then
> echo "$linha contém um 'á'"
> fi
> if [ "$(echo $linha | grep 'B')" ];
> then
> echo "$linha contém um 'B'"
> fi
> done
>
> O resultado foi isso:
>
> ./acentos.sh
> Belem do Pará contém um 'B'
>
> Notem que quando procura pela scting "B" funciona, mas quando procura
> acentos, não funciona.
> Poderiam me dizer porque?
>
> Grato
>
>  
>



-- 
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj


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



reply via email to

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