2010-05-13 4 views
1

je dois formater une hexdump comme ceci:mise en route avec lex

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 
‍ 

à

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 
  • supprimer les champs d'adresse, si elle est présente

  • enlever toute 08 à la fin d'un paragraphe (suivi d'une ligne vide)

  • supprimer toutes les lignes vides

Comment cela peut-il être fait en utilisant lex? Merci!

Répondre

1

Cela ne peut pas être fait directement en utilisant lex. Lex est un tokenizer, pas un analyseur.

En toute honnêteté, cela peut être fait en utilisant une expression régulière et n'a pas besoin de la complexité d'un générateur de scanner + générateur d'analyseur.

+0

D'accord, lex est probablement plus l'outil que vous besoin de quelque chose comme ça. –

1

Si vous Slurp dans le fichier entier comme une seule chaîne, je pense que ces expressions régulières feront ce que vous voulez (écrit pour Perl, mais n'a pas été testé):

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