você está aqui: Home  → Arquivo de Mensagens

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

 

 

Opinião dos Leitores

Fernando
07 Jun 2013, 18:45
Basta usar o comando [B]unaccent[/B].

$ unaccent ISO-8859-1 < ArquivoComAcentos > ArquivoSemAcento

Funcionou perfeito para mim.
Marc
06 Fev 2013, 12:43
Tentei colocar as entidades html exemplo:
"s/à/à/g"

Mas não consegui.
Marc
06 Fev 2013, 12:21
Para trocar os acentos por html

s/à/à/g
s/À/À/g
s/á/á/g
s/Á/Á/g
s/é/é/g
s/É/É/g
s/í/í/g
s/Í/Í/g
s/ó/ó/g
s/Ó/Ó/g
s/ú/ú/g
s/Ú/Ú/g
s/ã/ã/g
s/Ã/Ã/g
s/õ/õ/g
s/Õ/Õ/g
s/â/â/g
s/Â/Â/g
s/ê/ê/g
s/Ê/Ê/g
s/ô/ê/g
s/Ô/Ê/g
s/ç/ç/g
s/Ç/Ç/g
Alexandro Silva
12 Ago 2012, 01:03
Salvou uma alma! =)
Marcio Lopes
16 Jun 2011, 16:12
Ótima dica... Agiliza um bocado...
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script