我有一些关于HDF5文件格式的文档,使用了GraphViz dot语言编写。(这是一种类似C语言的语言,有很多大括号。)这个主文件包含许多这样的元素:
subgraph cluster_clustername {
...
lots of stuff including more curly braces spanning multiple lines
...
}
我想根据clustername提取这一段文本,以创建各个子图的图表,而不是包含所有内容的大型超级图表。每个子图群集都是一个单独的HDF5文件,通过HDF5外部软链接连接在一起。应该有一种方法可以提取所需的文本块(匹配某些特定文本模式后的第一个{和跨越多行的结尾}之间的嵌套)。因为C和类C语言的普及性,这似乎应该是相对常见的任务。
我认为最适合完成此任务的工具是:
awk python
gvpr- graphviz提供的图形流编辑器(但对于其他人来说可能没有帮助,例如有相同问题的C程序员,网络上几乎没有示例,并且语法令人困惑)
sed
目前我通过使用M-x ediff-regions-linewise在Emacs中维护主文件,然后更新每个派生文件,但我需要一种自动化且强大的生成派生文件的方法,以便可以使用Make构建文档文件。我对上述工具唯一有一点经验的是sed,但由于模式复杂且跨越多行,我认为awk或python这样的工具更适合执行此任务。
事实上,我尝试了一种类似于awk中引用计数的技术,但我遇到了一些问题,不理解awk的某些更微妙的行为,而且过去我只使用过awk的一行代码。
非常感谢您提前提供任何帮助。 -Z