从 Markdown 文件中提取三重反引号围栏代码块 ``` 摘录

rec*_*uze 8 sed

我有一个 pandoc markdown 文件,里面有很多代码。我想最好使用sed. pandoc 中的代码语法是三个或更多``` 符号来开始和结束代码段。

```
Code is here
```
Run Code Online (Sandbox Code Playgroud)

我可以提取一行,但我无法在标记之间提取。

gol*_*cks 8

sed -n '/^```/,/^```/ p' < input.file
Run Code Online (Sandbox Code Playgroud)

将打印 ``` 之间的所有行,但也包括 ``` 行。要摆脱它:

sed -n '/^```/,/^```/ p' < input.file | sed '/^```/ d'
Run Code Online (Sandbox Code Playgroud)

您可以找到有关如何按模式使用行范围的说明,以及从此处开始的“p”和“d”命令:

http://www.grymoire.com/Unix/Sed.html#uh-29


小智 5

注意: 我是 rundoc 的主要开发人员和维护者。


对于为此类事情寻找通用工具的任何人:

Rundoc是一个通用工具,用于从 Markdown 文件中运行或提取受防护的代码块。您可以通过 pip for python3: 来安装它pip3 install rundoc

提取代码块:

rundoc list-blocks your_file.md -t#bash#perl#python
Run Code Online (Sandbox Code Playgroud)

bash将提取带有,perl或突出显示标记的代码块python。不幸的是,没有突出显示标签的代码块总是被忽略。

您还可以将 markdown 文件作为脚本运行

rundoc run your_file.md -t#bash#perl#python
Run Code Online (Sandbox Code Playgroud)

这将执行具有匹配突出显示标记的所有代码块,并使用突出显示标记来查找正确的解释器。

注意:要获取没有 JSON 或标头的纯代码,请使用jq工具:

rundoc list-blocks your_file.md | jq -r "(.code_blocks[] | {code}).code"
Run Code Online (Sandbox Code Playgroud)