1

我需要像这样格式化一些 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做到这一点?谢谢!

4

2 回答 2

1

它不能直接使用 lex 来完成。Lex 是分词器,而不是解析器。

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

于 2010-05-13T05:27:29.480 回答
1

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

s/^\d{4}: //mg
s/ 08\n\s*\n/\n/g
s/^\s*$//mg
于 2010-05-13T16:54:18.107 回答