以 hexdump 格式转义百分号 (%)

Escape percent sign (%) in hexdump format

问题

我正在尝试发出一个十六进制字符串,例如:

echo hello | hexdump -ve '/1 "_%02X"' ; echo

但用 % 代替。

实际与预期

echo hello | hexdump -ve '/1 "%%%02X"' ; echo

失败

hexdump: bad conversion character %%

问题

有什么方法可以转义 hexdump 格式字符串中的 % 吗?

我看不出有什么方法可以让 hexdump 直接发出 '%' 字符。也许您可以继续发出 '_' 字符,然后通过 sed 将结果通过管道传输以将 '_' 转换为 '%'。像这样:

echo hello | hexdump -ve '/1 "_%02X"' | sed -e 's/_/%/g'

产生:

%68%65%6C%6C%6F%0A