52

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}'
0x90
  • 39,472
  • 36
  • 165
  • 245
  • age is not the primary factor, but rather upvotes and answer quality ;-) http://meta.stackoverflow.com/questions/251938/should-i-flag-a-question-as-duplicate-if-it-has-received-better-answers – Ciro Santilli OurBigBook.com Sep 04 '15 at 08:34
  • hexdump file.bin | sed "s/[^ ]* //1" This will remove the line numbers, by default the ascii table wouldn't be printed. – Owl Jul 18 '17 at 09:19

4 Answers4

84

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.
0x90
  • 39,472
  • 36
  • 165
  • 245
66

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.)

chepner
  • 497,756
  • 71
  • 530
  • 681
  • Great!! Usefull for me this answer! But I think is better also to have `-C` option. And if you add `cut -c 9- | head -n 1` your output will display only the hex numbers. – Kyrol Apr 21 '15 at 13:58
  • [This blog entry](https://blog.senpaisilver.com/linux/formatting-hexdumps-output/) shows more examples how to modify the output format of `hexdump`. – Matthias Braun Jan 09 '21 at 12:56
  • 3
    Add `-v` to list every line and not to compress same lines with `*` – dagelf Nov 03 '21 at 09:03
30

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

twalberg
  • 59,951
  • 11
  • 89
  • 84
4

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-
glenn jackman
  • 238,783
  • 38
  • 220
  • 352