我有下一个问题;
$ echo ača | tr 'č' 'c'
$ acca
为什么它给 mi 双“c”?如何解决?我想要 aca
,而不是 acca
。
最佳答案
č
在 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
关于linux - 当我使用特殊字符时,为什么 tr 给我双字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901221/