2012-03-27 59 views
9

在基于Debian的发行版中,有一个名为unaccent的实用程序,可用于从文本中的重音字母中删除重音符号。bash脚本中的unaccent字符串(RHEL)

我正在寻找一个包含在Redhat发行版上的软件包,但我发现的唯一一个是unac只适用于Mandriva。

我试图用iconv,但它似乎不支持我的情况。

什么是最好的,轻量级的方法,易于在bash脚本中使用? iconv是否有任何秘密选项允许这样做?

+1

['unaccent']( http://www.nongnu.org/unac/unaccent-man1.en.html)不会*删除*重音字符,而是“从输入流或字符串中删除重音符号”(“été”更改为“ete”,而不是“t”) - 这称为[整理](https://en.wikipedia.org/wiki/Collat​​ion)。你真的要删除*字符吗? – l0b0 2012-03-27 12:41:56

+0

你是绝对正确的,我想删除口音,感谢更正:)(我只是修复了这个问题) – 2012-03-27 14:16:49

回答

13

可以使用-c(清除)选项iconv除去非ASCII字符:

$ echo 'été' | iconv -c -f utf8 -t ascii 
t 

如果你只是想删除的口音:

$ echo 'été' | iconv -f utf8 -t ascii//TRANSLIT 
ete 
+0

谢谢,但@10b0注意到,我真正想要的是删除不重音字符的重音。有没有办法用iconv或任何其他工具做到这一点? – 2012-03-27 14:22:52

+0

完美,现在这是我所需要的,谢谢 - 测试{echo'Přílišžluťoučkýkůňúpělďábelskéódy'| iconv -t'ASCII // TRANSLIT'} – 2012-03-27 14:37:11

+2

伟大的解决方案;不幸的是,它在OSX上无法正常工作,大概是由于一个错误(例如'GNU libiconv 1.11'带有'OS X 10.9.2'):'echo'ü'| iconv -f UTF8 -t ASCII // TRANSLIT'产生''u'而不是'u'。 – mklement0 2014-04-25 11:52:09