如何将hexdump打印的列数从默认的16(更改为21)?
或者我在哪里可以找到地方更改hexdump中使用的默认格式字符串,以修改此处使用的数字?

最佳答案

似乎可以这样获得默认格式:

hexdump -e '"%07.7_Ax\n"' -e '"%07.7_ax " 8/2 "%04x " "\n"'
man hexdump:
 Implement the -x option:

       "%07.7_Ax\n"
       "%07.7_ax  " 8/2 "%04x " "\n"
如果您想了解hexdump的格式,则必须阅读该手册,但这是对先前格式的简短介绍:
  • 第一部分%07.7_Ax\n是显示仅包含偏移量的最后一行的部分。根据手册:
       _a[dox]     Display the input offset, cumulative across input files, of the
                   next byte to be displayed.  The appended characters d, o, and x
                   specify the display base as decimal, octal or hexadecimal
                   respectively.
    
       _A[dox]     Identical to the _a conversion string except that it is only
                   performed once, when all of the input data has been processed.
    
  • 第二点:现在我们了解了"%07.7_ax "部分。 8/2表示以下的8个迭代和2个字节,即"%04x "。最后,在这些之后,我们有了换行符:"\n"

  • 我不确定您要21字节的大小。也许这样做:
    hexdump -e '"%07.7_Ax\n"' -e '"%07.7_ax " 21/1 "%02x " "\n"'
    
    而且您知道如何摆脱偏移量,如果需要的话:
    hexdump -e '21/1 "%02x " "\n"'
    

    10-08 02:09