我想從hexdump
以下結果包圍: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中的任何其他字符對待。
The format is required and must be surrounded by double quote (" ") marks. It is interpreted as a fprintf-style format string (see fprintf(3)), with the following exceptions:
+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
是否有可能你的shell會首先嚐試擴大單反斜線?即,嘗試使用雙反斜槓。 – usr2564301
導致'\\ t'的錯誤。使用bash和整個arg是在一個單引號字符,因此*不應*做殼側的任何擴展。 – arcyqwerty
'hexdump:%\:錯誤的轉換字符'同時使用'\\ t%x \\ t' – arcyqwerty