Linux awk中带有Umlauts的printf不';行不通

Linux awk中带有Umlauts的printf不';行不通,linux,bash,awk,character-encoding,Linux,Bash,Awk,Character Encoding,有人能给我一个替代以下awk声明的选项吗。只要我给字符串一个“n”,它就会在Umlaut之后跳过。我不想使用gsub,因为我有很多特殊的角色,不想为此编写脚本 $ echo "Döll" | awk '{printf "%s\n", $0}' Döll $ echo "Döll" | awk '{printf "%1s\n", $0}' D 如果不是在awk中,有人能用其他语言帮助我吗?问题是由LANG变量设置为en_US.UTF-8引起的。将其更改为De_De.88591后,它就像一个符咒一

有人能给我一个替代以下awk声明的选项吗。只要我给字符串一个“n”,它就会在Umlaut之后跳过。我不想使用gsub,因为我有很多特殊的角色,不想为此编写脚本

$ echo "Döll" | awk '{printf "%s\n", $0}'
Döll
$ echo "Döll" | awk '{printf "%1s\n", $0}'
D

如果不是在awk中,有人能用其他语言帮助我吗?

问题是由
LANG
变量设置为
en_US.UTF-8
引起的。将其更改为
De_De.88591
后,它就像一个符咒一样工作。

对我来说,第二个命令还返回“Döll”。即使使用德语也不会出现这种情况:
LANG=De_De.88591 echo“Döll”| awk'{printf”%1s\n“,$0}'
。与@fedorqui的结果相同,第二行的效果类似于charm。大家好,谢谢提示。我的LANG变量设置为en_US.UTF-8。这就是问题所在。将其更改为De_De.88591。现在它就像一个符咒。感谢所有esp@fedorqui。很高兴你能解决它!为了记录在案,对我来说,
LANG=en_US.UTF-8 echo“Döll”| awk'{printf”%1s\n“,$0}'
还返回
Döll
@fedorqui,这可能是因为您从SO复制了它,它使用UTF-8编码,而tranceporter是在ISO-8859-1中输入的。这个问题与语言无关,它是特定于编码的。