我有一个 pandoc markdown 文件,里面有很多代码。我想最好使用sed
. pandoc 中的代码语法是三个或更多``` 符号来开始和结束代码段。
```
Code is here
```
Run Code Online (Sandbox Code Playgroud)
我可以提取一行,但我无法在标记之间提取。
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)