我有下一个问题;
$ echo ača | tr 'č' 'c'
$ acca
为什么它给了mi double" c" ?怎么解决?我想要aca
,而不是acca
。
答案 0 :(得分:4)
č
在unicode中长度为两个字节:
charinfo č
U+010D LATIN SMALL LETTER C HACEK [Ll]
tr
会将其视为每个字节的两个字符。然后它将扩展第二个参数,直到所有字符都被替换,因此两个c。。
你可以使用sed(可能只是GNU):
echo ača | sed 'y/č/c/'
或Perl:
echo ača | perl -pe 'use open qw(:std :utf8);use utf8;y/č/c/'
考虑一下这可能会让你了解正在发生的事情:
% echo abc | tr 'abc' 'de'
dee