De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Julio Cezar Neves
Data de Publicação: 12 de janeiro de 2024
Uma dica rápida, porém bem útil para todos aqueles que usam pt_BR.UTF-8 e
por conseguinte trabalham com arquivos com letras acentuadas: para ilustrar,
digamos que eu queira tirar os acentos de todas as letras a
de um texto e
tento fazer:
$ sed 's/a/x/g' <<< aáàãâ
xáàãâ
Não funcionou, ele só trocou o primeiro a
, porque ele estava sem acento e é
para isso que existe a equivalência de classe. Veja então como seria:
$ sed 's/[[=a=]]/x/g' <<< aáàãâ
xxxxx
Onde a notação [[=C=]]
casa com todos os caracteres equivalentes ao
caractere definido por C
. Como, em casos de substituição, só é possível
fazê-lo de um para um, só é possível fazer a equivalência de um único
caractere por vez, para tirar todos os acentos de ARQUIVO, eu deveria fazer:
sed 's/[[=a=]]/a/g s/[[=e=]]/e/g s/[[=i=]]/i/g s/[[=o=]]/o/g s/[[=u=]]/u/g s/[[=c=]]/c/g' ARQUIVO
Porém nos casos de pesquisa, como com o grep
, poderemos especificar mais
de um, veja como:
$ grep -o '[[=a=][=c=]]' <<< Ação
A
ç
ã
O problema para casos como este, é que as maiúsculas também são alteradas para minúsculas, tendo ou não acento.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários