views:

73

answers:

2

I need to format some hexdump like this:

00010: 02 03 04 05
00020: 02 03 04 08
00030: 02 03 04 08

00010: 02 03 04 05
00020: 02 03 04 05
02 03 04 05
02 03 04 08
‍

to

02 03 04 05
02 03 04 08
02 03 04
02 03 04 05
02 03 04 05
02 03 04 05
02 03 04
  • remove the address fields, if present

  • remove any 08 at the end of a paragraph (followed by an empty line)

  • remove any empty lines

How can this be done using lex? thanks!

+1  A: 

It cannot be done directly using lex. Lex is a tokenizer, not a parser.

In all honesty, it can be done using a regular expression and doesn't need the complexity of a scanner generator + parser generator.

Yann Ramin
Agreed, lex is probably more tool than you need for something like this.
David M
A: 

If you slurp in the whole file as one string, I think these regular expressions will do what you want (written for Perl, but not tested):

s/^\d{4}: //mg
s/ 08\n\s*\n/\n/g
s/^\s*$//mg
David M