如何使用hexdump同时显示不同演示文稿中的字符

How to use hexdump to show charaters in different presentations at the same time

我统计的是文件的字符数和整个目录的目录名。

find . -printf "%f/n" | sed 's/./&\n/g' | sort | uniq -c 

输出:

    234 _
    162 /
    341 .
    342 0
    156 1
    217 2
     99 3
    ...

但我还需要一个十进制列表,十六进制列表同时找到的字符的正常表示:

示例:

066 0x42 'A'
...
090 0x5A 'Z' 

我已经尝试 hexdump 使用不同的格式选项,但这对我不起作用。

可以用hexdump完成吗?

Can it be done with hexdump?

是:

find . -printf "%f/n" |
hexdump -v -e '/1 "%03d "' -e '/1 "0x%02X "' -e '/1 "%c\n"'

请参阅 hexdump 手册页末尾的示例。

这是我在你回答后的实现:

find . -printf "%f\n" | sed "s/./&\n/g" | sort | uniq  | tr -d '\n' | hexdump -v -e '/1 "%03d "' -e '/1 "0x%02X "' -e '/1 "<%c>\n"'

输出:

060 0x3C <<>
062 0x3E <>>
058 0x3A <:>
063 0x3F <?>
046 0x2E <.>
097 0x61 <a>
098 0x62 <b>
099 0x63 <c>
100 0x64 <d>
101 0x65 <e>
069 0x45 <E>
102 0x66 <f>
104 0x68 <h>
072 0x48 <H>
105 0x69 <i>
108 0x6C <l>
109 0x6D <m>
110 0x6E <n>
078 0x4E <N>
111 0x6F <o>
195 0xC3 <�>
182 0xB6 <�>
...

hexdump/hd 的替代方法是 xxd。 xxd 可以转换为十六进制并返回。但是我警告你使用 32 位数据和 XOR 我注意到一个错误,我得到的是 46 而不是 41。还有一个用于大写和小写十六进制的选项,默认情况下是 BIG ENDIAN 但有一个 LITTLE ENDIAN 选项并记住输出是一个字符字符串而不是十六进制等价物。

我认为 hexdump -C 命令是您要查找的内容,请参阅 man hexdumpman xxd

PS> @Dummy00001 hexdumps "/1" 是做什么的?如果我省略它,我会得到相同的结果 @ebart 为什么在你的 sed 脚本替换操作中有一个 'g' 字符在行尾用 \n 替换每个字符(&):"s/./&\n/g"

来自下面的 link: X/X 格式称为计数说明符,因此 2/4 表示 4 字节(32 位)值的 2 个实例。 %08x 格式表示将值输出为带前导零的 8 位十六进制数。

此命令不是您问题的答案,而是显示 hexdump 格式化是如何完成的: hexdump -s 446 -n 64 -v -e '1/1 "%02x" 3/1 " %3d" 1/1 " %02x" 3/1 " %3d" 2/4 "