Mac命令行提取文档片段存新文件及ReleaseNotes条目提取方法问询
提取Markdown文档中首个版本的发布说明(Mac命令行)
嘿,我来帮你搞定这个需求!针对从ReleaseNotes.md里提取第一个版本条目并保存为新文件的场景,awk是最直观且高效的选择——它天生适合处理这种按区块分割的文本,而且Mac系统自带,不用额外装工具。
方案1:用awk实现(推荐)
直接在终端运行这条命令:
awk '/^## / {if (found) exit; found=1} found' ReleaseNotes.md > LatestReleaseNotes.md
命令逻辑拆解:
/^## /:匹配所有以##开头的行(也就是版本标题行)if (found) exit; found=1:第一次匹配到版本标题时,标记found为1;第二次匹配到新的版本标题时,直接退出脚本(因为我们只需要第一个版本)found:当found为1时,打印当前行——这样就会输出从第一个版本标题开始,到下一个版本标题之前的所有内容
运行后,LatestReleaseNotes.md里就会只保留第一个版本的内容:
## 1.20.2 - 2020-09-11 * [UID-4782] - Connectivity issues fixed
方案2:用sed实现
如果你更习惯sed,也可以用这条命令:
sed -n '/^## /,/^## /{/^## /{p;n};p;q}' ReleaseNotes.md > LatestReleaseNotes.md
命令逻辑拆解:
-n:让sed只打印我们指定的行/^## /,/^## /:匹配从第一个##行到第二个##行的区间{/^## /{p;n};p;q}:遇到第一个版本标题时,打印它并跳过后续判断;打印区间内的其他行,直到遇到第二个版本标题时直接退出(q命令),从而只保留第一个版本的内容
工具选择说明
- awk/sed都是Mac默认预装的工具,无需额外安装,兼容性拉满
- 相比grep(默认单行匹配),awk/sed能更方便地处理多行区块的提取
- pcregrep虽然支持正则多行匹配,但对于这个场景来说有点大材小用,awk/sed的方案更轻量直接
内容的提问来源于stack exchange,提问作者SEG.Veenstra
相关产品推荐
相关产品推荐

