我希望能够从我的代码中提取片段以用于文档目的。每次我以低廉的成本编译代码时,我都可以这样做,这是使代码和文档(至少是片段)保持最新的简单方法。
所以我想要一个文件source.cc
,里面有这样的东西:
// DOCSNIP: source_def.snip
[code]
// DOCSNIP
很明显,一个文件中可能不止一个。要点是我想划定一个代码区域(我不喜欢语法),以及一个文件名来粘贴它,并在定界符之间写下内容(在这种情况下为“[代码]”)到文件 (source_def.snip)。
使用标准工具 (awk/sed/grep) 将这些 block 提取到各自文件中的最简单方法是什么?
最佳答案
awk
助您一臂之力!
$ awk '/\/\/ DOCSNIP:/{f=$NF} f{print > f} /\/\/ DOCSNIP$/{f=""}' file
$ head sou*
// DOCSNIP: source_def.snip
[code]
// DOCSNIP
如果文件名中有空格,将无法工作。
如果您不想要定界线,只需重新排列语句即可
$ awk '/\/\/ DOCSNIP$/{f=""} f{print > f} /\/\/ DOCSNIP:/{f=$NF}' file
只会打印中间的内容。
关于linux - 提取文件中两个分隔符之间的文本并写入给定文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51935622/