você está aqui: Home  → Arquivo de Mensagens

Ebook Gratuito: Dá para fazer em Shell?, com o Prof. Julio Neves

Script para remover acentos de documentos

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 26 de Abril de 1997

Todas as dicas enviadas através desta lista são geradas originalmente com todos os acentos. Para facilitar a vida de quem lê mail com programas que não oferecem suporte a caracteres acentuados, eu crio uma outra versão do documento, sem conter os acentos. A dica de hoje, visto abordar acentuação obviamente não pode ser veiculada sem os acentos.

Para realizar esta conversão, foi criado um shell script que, utilizando o comando sed para efetuar a troca dos caracteres.

Este script pode ser utilizado para várias outras finalidades. Nós faziamos antigamente, quando não possuímos conexão rápida com a Internet, um mirror de alguns servidores Web que julgavamos úteis. Após a transferência das páginas via FTP (ainda não existiam ferramentas como wget e outros; talvez até já existissem, mas não as conheciamos) era rodado um shell script que convertia tudo que fosse http://www.site.edu para http://www.unicamp.br. Outra utilização, criar arquivos para processamento pelo programa Ventura Publisher, que convertia algumas marcações de parágrafos em tags para o Ventura. Pode-se até criar um editor HTML, que realiza a expansão de alguns tags em diretivas html.

O script possui dois componentes, um arquivo com os comandos propriamente ditos e um outro com diretivas para o comando sed.

Vamos ao primeiro deles, o script tiraacento:

#! /bin/sh
#	
#	Autor: Queiroz
#	Data : 11/08/94
#
#	Este shell script remove a acentuação de um arquivo 
#	

# A seguir, a localização do arquivo onde se encontram as diretivas
# para o comando sed

MACROS=/home/queiroz/bin

# testa se foram fornecidos os arquivos de entrada e saida para
# o comando. Caso haja erro neste passo emitir a mensagem e encerrar
# o processamento

if [ $# -lt 2 ]; then
        echo 1>&2 Sintaxe: $0 arquivo_entrada arquivo_saida
        exit 1
fi

# Atribui à variável infile o primeiro argumento e à variável outfile
# o segundo argumento

infile=$1
outfile=$2

# Executa o comando sed para efetuar as substituições

sed -f $MACROS/tiraacento.sed $infile  > $outfile

O arquivo tiraacento.sed contém as diretivas para o comando sed. Desta forma o caracter ã será substituído por ~a e assim por diante.= Caso se opte por remover totalmente a acentuação basta substituir s/ã/~a/g por s/ã/a/g. Algumas pessoas preferem desta forma.=

tiraacento.sed

s/ã/~a/g=
s/Ã/~A/g=
s/à/`a/g
s/À/`A/g
s/ô/\^o/g
s/ô/o/g
s/Õ/~O/g=
s/é/e'/g
s/É/E'/g
s/á/a'/g
s/ó/o'/g
s/Á/A'/g
s/Ó/O'/g
s/ç/,c/g
s/Ç/,C/g
s/ê/\^e/g
s/Ê/\^E/g
s/ú/u'/g
s/Ú/U'/g
s/â/a\^/g
s/Â/\^A/g
s/í/i'/g
s/Í/I'/g
s/Ü/U/g
s/ü/u/g


Veja a relação completa dos artigos de Rubens Queiroz de Almeida