开始使用lex

时间:2010-05-13 04:54:36

标签: regex unix lex

我需要像这样格式化一些hexdump:

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
  • 删除地址字段(如果有)

  • 删除段落末尾的任何08(后跟空行)

  • 删除所有空行

如何使用 lex 完成此操作?谢谢!

2 个答案:

答案 0 :(得分:1)

使用lex无法直接完成。 Lex是一个标记器,而不是解析器。

老实说,它可以使用正则表达式完成,不需要扫描器生成器+解析器生成器的复杂性。

答案 1 :(得分:1)

如果你把整个文件作为一个字符串,我认为这些正则表达式会做你想要的(为Perl编写,但没有经过测试):

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