我想从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 An asterisk (*) may not be used as a field width or precision. +o A byte count or field precision is required for each ``s'' con- version character (unlike the fprintf(3) default which prints the entire string if the precision is unspecified). +o The conversion characters ``h'', ``l'', ``n'', ``p'' and ``q'' are not supported. +o The single character escape sequences described in the C stan- dard are supported: NUL \0 <alert character> \a <backspace> \b <form-feed> \f <newline> \n <carriage return> \r <tab> \t <vertical tab> \v
答案 0 :(得分:2)
此行为is actually a fixed, not so long ago, bug。对于受影响的版本,有一种解决方法:只需将前导反斜杠放入单独的格式字符串中。
例如,您想要的代码如下:
echo -n xyz | hexdump -e '"\t" 1/1 "%x"'