Mtl*_*Dev 13 linux bash terminal sed awk
如何打印文本文件中每个字符的数字 ASCII 值。像cat,但只显示 ASCII 值...(十六进制或十进制都可以)。
包含单词Apple(带有换行符)的文件的示例输出可能如下所示:
065 112 112 108 101 013 004
Run Code Online (Sandbox Code Playgroud)
Sté*_*las 20
该标准针对的命令是od,八进制转储(虽然选项,你可以从八进制到十进制或十六进制...更改):
$ echo Apple | od -An -vtu1
65 112 112 108 101 10
Run Code Online (Sandbox Code Playgroud)
请注意,它输出文件中每个字节的字节值。它与 ASCII 或任何其他字符集无关。
如果文件在给定字符集中包含 A,并且您希望看到 65,因为这是 ASCII 中用于 A 的字节,那么您需要执行以下操作:
< file iconv -f that-charset -t ascii | od -An -vtu1
Run Code Online (Sandbox Code Playgroud)
首先将该文件转换为 ascii,然后转储相应的字节值。例如,Apple<LF>在 EBCDIC-UK 中将是193 151 151 147 133 37(301 227 227 223 205 045八进制)。
$ printf '\301\227\227\223\205\045' | iconv -f ebcdic-uk -t ascii | od -An -vtu1
65 112 112 108 101 10
Run Code Online (Sandbox Code Playgroud)
thr*_*rig 16
hexdump, od, xxd, 或$YOUR_FAVORITE_LANGUAGE都可以做到这一点。
% echo Apple | hexdump -C
00000000 41 70 70 6c 65 0a |Apple.|
00000006
% echo Apple | perl -ne 'printf "%vd\n", $_'
65.112.112.108.101.10
% echo Apple | clisp <( echo '(print (mapcar #'\''char-code (coerce (read-line *standard-input*) '\''list)))' )
(65 112 112 108 101)
%
Run Code Online (Sandbox Code Playgroud)