2014-11-01 3 views
7

Come modificare il numero di colonne stampate in hexdump dal valore predefinito 16 (a 21)?Come modificare il numero di colonne stampate in `hexdump`?

O dove posso trovare il posto per cambiare la stringa di formato predefinita utilizzata in hexdump per modificare il numero utilizzato lì?

+6

Puoi provare questo 'hexdump -e '21/1"% 02x "" \ n "'' –

+0

@gniourf_gniourf funziona! grazie. –

+0

Si prega di trovare una risposta che contenga anche informazioni sul formato predefinito. –

risposta

6

Sembra che il formato predefinito si ottiene in tal modo:

hexdump -e '"%07.7_Ax\n"' -e '"%07.7_ax " 8/2 "%04x " "\n"' 

Da man hexdump:

Implement the -x option: 

     "%07.7_Ax\n" 
     "%07.7_ax " 8/2 "%04x " "\n" 

Se si vuole capire il formato hexdump s', dovrete leggere il manuale, ma ecco una breve descrizione del formato precedente:

  • La prima parte %07.7_Ax\n è la parte che visualizza l'ultima riga che contiene solo l'offset. Per il manuale:

    _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. 
    
  • Per la seconda: ora capiamo la parte "%07.7_ax ". Il 8/2 significa 8 iterazioni e 2 byte per quanto segue, e precisamente, "%04x ". Infine, dopo questi, abbiamo una nuova riga: "\n".

Io non sono davvero sicuro di come si desidera che i 21 byte, forse questo avrebbe fatto:

hexdump -e '"%07.7_Ax\n"' -e '"%07.7_ax " 21/1 "%02x " "\n"' 

e non si sa come sbarazzarsi della compensazione, se necessario:

hexdump -e '21/1 "%02x " "\n"'