我有许多 cmake 头文件,我想从中提取注释和 ,cmakedefine
到 CSV(或 TSV)文件中。
典型的输入如下所示:
/**
* 1st Multi-line brief description of what the following
* cmakedefine does.
*
* Second more complicated multi-line full description, of <c>SOMETHING</c> to be enabled in the
* configuration.
*
* Possibly additional lines of full description.
*/
#cmakedefine SOMETHING
第一步输出是这样的:
SOMETHING
1st Multi-line brief description of what the following cmakedefine does.
Second more complicated multi-line full description , of <c>SOMETHING</c> to be enabled in the configuration. Possibly additional lines of full description.
...
最终我希望得到的输出是这样的:
SOMETHING, "1st Multi-line brief description of what the following cmakedefine does.", "Second more complicated multi-line full description, of <c>SOMETHING</c> to be enabled in the configuration. Possibly additional lines of full description."
SOMETHING_ELSE, "Brief description", "Long Description"
(列标题可以隐含为:cmakedefine, Brief_Description, Long_Description
。)
我尝试在sed中执行此操作但没有成功,这不是打发时间的好方法。我也尝试过awk但没有成功。此时我不在乎使用什么工具,只想完成工作。但我认为也许 Python 可以更好地用于此目的。
注意事项:
- 所有评论都以空开头
/**
。 - 所有
Brief
注释都以 开头\ * \
,可以多行。 Brief
和Long
注释之间用空注释行分隔\ *
。- 所有
Long
评论都可以有多个段落(如图所示),以类似的方式。 - 相关内容
cmakedefine
如下评论。
在 AWK 中看起来不错,总体复杂性取决于输入的不同程度。这里有一些可以帮助您开始的东西:
输出:
这是一个很好的 awk 教程https://www.grymoire.com/Unix/Awk.html
下一步将添加一些状态,例如不输出空注释,可能使用一些正则表达式清除更多输入,并正确引用 csv 或 tsv 或您想要的格式,随着复杂性的增加,回答为什么不使用 python 和json。
如果您想将python与regex一起使用:
输出(以表格格式):