kos Asked: 2015-03-26 05:52:04 +0800 CST2015-03-26 05:52:04 +0800 CST 2015-03-26 05:52:04 +0800 CST 如何在 bash 中打印八进制值对应的 UTF-8 字符? 772 我希望printf %s '\<octal_character_value>'能做到这一点,但事实并非如此: printf %s '\101' 输出: \101 command-line 3 个回答 Voted Best Answer muru 2015-03-26T05:57:11+08:002015-03-26T05:57:11+08:00 想必你想要%b。来自help printf: In addition to the standard format specifications described in printf(1), printf interprets: %b expand backslash escape sequences in the corresponding argument 和: $ printf "%b\n" '\101' A 我不知道它是否适用于一般的 Unicode 字符。 Zombo 2017-03-27T20:48:39+08:002017-03-27T20:48:39+08:00 你可以使用 Awk: $ awk 'BEGIN {print "\107"}' G 或者 awk Velor 库: $ velour -n 'print n_chr(+n_baseconv(107, 8, 10))' G RARE Kpop Manifesto 2021-08-14T02:44:26+08:002021-08-14T02:44:26+08:00 只要您输入字节,它就可以使用 unicode。 $ gprintf '\353\200\200' | odview 0000000 8421611 "" ** ** 353 200 200 ? 80 80 235 128 128 eb 80 80 8421611 0000003 运算符不是必需的%b(只要您的八进制不是\0NNN形式,至少在 macOS 11.5 bash3 内置、macOS BSD-UNIXprintf和gnu-printf 8.32. 这个角色是U+B000(n=45,056)。分解后的更冗长但工作原理相同 gprintf '\341\204\201\341\205\260\341\206\267' | odview 0000000 3783361761 2262937733 183 ᄁ ** ** ᅰ ** ** ᆷ ** ** 341 204 201 341 205 260 341 206 267 ? 84 81 ? 85 ? ? 86 ? 225 132 129 225 133 176 225 134 183 e1 84 81 e1 85 b0 e1 86 b7 -511605535 -2032029563 183
想必你想要
%b
。来自help printf
:和:
我不知道它是否适用于一般的 Unicode 字符。
你可以使用 Awk:
或者 awk Velor 库:
只要您输入字节,它就可以使用 unicode。
运算符不是必需的
%b
(只要您的八进制不是\0NNN
形式,至少在 macOS 11.5 bash3 内置、macOS BSD-UNIXprintf
和gnu-printf 8.32
.这个角色是
U+B000
(n=45,056)。分解后的更冗长但工作原理相同