我正在尝试从hexdump获得以下结果
78 79 7a那就是"\t78\t\t79\t\t7a\t"
正在尝试
echo -n xyz | hexdump -e '1/1 "\t%x\t"'导致错误:
hexdump: % : bad conversion character但
echo -n xyz | hexdump -e '1/1 "|%x|"'正确产量
|78||79||7a|增加空格:
echo -n xyz | hexdump -e '1/1 "\t %x \t"'做某事
t 78 t 79 t 7a 这是"\tt 78\t\tt 79\t\tt 7a\t",但我得到了所需的制表符和文字字母t,加上一些不需要的空格字符。
只使用一个尾随制表符时,它就能工作。
echo -n xyz | hexdump -e '1/1 "%x\t"'给我
78 79 7a 它是"78\t79\t7a\t",但不适用于单个前导选项卡
echo -n xyz | hexdump -e '1/1 "\t%x"'这又给了我一个错误
hexdump: %A: bad conversion character我不知道这个错误是从哪里来的,因为在任何地方都没有%A。
根据手册页,\t应该是一个受支持的转义序列,我把它当作printf中的任何其他字符。
格式是必需的,必须被双引号(“")包围。它被解释为fprintf样式的格式字符串(请参阅fprintf(3)),但有以下例外: +o星号(*)不能用作字段宽度或精度。+o不支持每个
s'' con- version character (unlike the fprintf(3) default which prints the entire string if the precision is unspecified). +o The conversion charactersh'‘、l'',n'’、p'' andq'‘的字节计数或字段精度。+o支持C stan- dard中描述的单字符转义序列: NUL \0 \a \b \f \n \r \t \v。
发布于 2016-09-13 14:20:38
这种行为实际上是一个固定的,不久以前,bug。对于受影响的版本,有一个解决办法:只需将前面的反斜杠放入单独的格式字符串即可。
例如,您想要的代码如下所示:
echo -n xyz | hexdump -e '"\t" 1/1 "%x"'https://stackoverflow.com/questions/34145188
复制相似问题