How to print only the hex values from hexdump without the line numbers or the ASCII table? [duplicate]

StackOverflow https://stackoverflow.com/questions/15553493

  •  29-03-2022
  •  | 
  •  

Question

following Convert decimal to hexadecimal in UNIX shell script

I am trying to print only the hex values from hexdump, i.e. don't print the lines numbers and the ASCII table.

But the following command line doesn't print anything:

hexdump -n 50 -Cs 10 file.bin |  awk '{for(i=NF-17; i>2; --i) print $i}'
Was it helpful?

Solution 2

You can specify the exact format that you want hexdump to use for output, but it's a bit tricky. Here's the default output, minus the file offsets:

hexdump -e '16/1 "%02x " "\n"' file.bin

(To me, it looks like this would produce an extra trailing space at the end of each line, but for some reason it doesn't.)

OTHER TIPS

Using xxd is better for this job:

xxd -p -l 50 -seek 10 file.bin

From man xxd:

xxd - make a hexdump or do the reverse.

    -p | -ps | -postscript | -plain
        output in postscript continuous hexdump style. Also known as plain hexdump style.

    -l len | -len len
        stop after writing <len> octets.
 
    -seek offset
        When used after -r: revert with <offset> added to file positions found in hexdump.

As an alternative, consider using xxd -p file.bin.

First of all, remove -C which is emitting the ascii information.

Then you could drop the offset with

hexdump -n 50 -s 10 file.bin | cut -c 9-
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top