如何使用正则表达式批量删除多个 Markdown 文件的指定行?
Foreword
在维护开源项目文档的日常工作中,我经常会遇到需要使用正则表达式处理 Markdown 文件的场景。
之前曾分享过一篇《如何使用正则表达式批量添加和删除字符》,演示了实际工作中的两个小场景,主要是处理单个文件的多行内容。
这一篇呢,则分享一下如何使用正则表达式批量删除多个 Markdown 文件的指定行,可谓又快又精准。
场景描述
随着产品和项目的不断快速迭代,需要维护的文档版本也相应增加,即需要同时维护多个版本的文档。
目前,我所在的公司 PingCAP 采用的是 GitHub + Markdown 的文档维护方案,活跃的文档版本中,每个版本里有数百个 Markdown 文件。
在发布新一个大版本之前,需要准备好中、英文档。那如何放置新版本的文档呢?通常的做法是基于某个版本的文档,为新版本新建专属的文档存储目录,或者基于某个版本的文档分支,为新版本新建专属的分支。
这样就有一个小问题需要处理,即删除新版本文件中开头的元数据 (metadata) 里的别名 (aliases)。这里的别名又是什么呢?如果在维护文档的过程中,发现原来某个文件放置的目录已不恰当,或者文件名需要调整,那么可能需要将该文件放到新的目录或者修改文件名。
此时,就涉及到了文档链接即 URL 的变更。假设用户收藏了原来旧版本的 URL,不加别名的话,原 URL 就会变成死链;而如果加了别名的话,当用户打开旧 URL 时,就会自动跳转至新的 URL。Markdown 文件中的 aliases 示例如下:
而为某个大版本新建的文档目录或分支里,通常在最初是不需要那些从另外的版本带过来的别名的,因为对这个新版本来说,全部 URL 都是新的(除非希望早期的某个旧链接跳转至该版本的相应页面)。
每个 Markdown 文件中有且只有一行 aliases,所以本文的需求场景就是:将新建的新版本文档中的所有 aliases 那一行删除。
处理步骤
注:我通常使用 Visual Studio Code 来编辑 Markdown 文件,以下步骤为在 VS Code 中的操作。
1. 点击搜索按钮,启动搜索替换功能的设置。
2. 在搜索替换页面,点击选择正则表达式模式。
3. 填写正确的正则表达式来匹配所有 aliases 行。
在搜索栏输入 \naliases: \[.+
即可看到匹配检索结果,如下所示:
或者输入 aliases: \[.+\n
,匹配结果如下:
上述正则表达式拆解:
-
\n
:换行符,可匹配行尾。如果不加,则替换后会多一个空行。既可加在开头,也可加在末尾。 -
aliases:
+空格:所有 aliases 行共有的行首字符。aliases+冒号+空格。 -
\[
:对 "[" 字符转义。 -
.+
:句点可匹配任意单个字符,加号可匹配前一个字符的一次或多次重复。
4. 点击全部替换按钮,完成。
检查一下效果,确定符合预期。
Afterword
我还在持续地系统学习中,大多数情况是有需求时去寻找解决方案。
不知道大家在工作或学习中是否也跟正则表达式有过交集呢?欢迎留言交流~
-END-
猜你想读:
什么样的人适合做 Technical Writer?
技术文档诞生记 | 完整的技术写作流程是怎样的?
Technical Writer 可提供的交付物有哪些?
Write the Docs:连接技术文档人的全球社区,附海量学习资源
GitHub + Markdown 的新轻型技术写作模式速览
GitHub + Markdown 的技术文档方案深度解析
Technical Writer 日常工作中好用的小工具
技术传播人士应该知道的色彩搭配常识
如何使用颜色来提高技术文档的可读性?
Technical Writer 如何 Review 技术文档?| 重细节+全局观
技术翻译需要有 Technical Writer 的 sense
深度解析关于技术翻译的六个认知误区
如何让你的内容输出更加专业更有设计感?
书单 | 有哪些技术传播从业者必知必看的书籍?
有哪些适合技术传播从业者关注的优质博客?(一)
有哪些适合技术传播从业者关注的优质博客?(二)
行业动态 | 国内有哪些高校开设了技术传播或技术写作课程?
IEEE ProComm 2019 国际传播大会上,中国代表团有哪些精彩分享?
行业动态 | 2019 中国技术传播论坛上,大家都在谈论什么?
优质免费资源推荐 | 9 期技术写作短视频教程带你从入门到进阶
经验分享 | 来自 11 位 Technical Writer 前辈的职业发展建议(上篇)
经验分享 | 来自 11 位 Technical Writer 前辈的职业发展建议(下篇)
Technical Writer 想参与开源项目为文档做贡献,需提前掌握哪些知识?
Technical Writer 如何参与开源项目的文档,以不断提升专业技能?
技术传播沙龙精彩分享 | 高校老师与行业大牛谈“互联网技术写作”
经验分享 | 对用户文档进行伤筋动骨式的重构是怎样一种体验?
英语技术文档的标题到底该大写还是小写?
不同阶段如何应对 Technical Writer 的职业顾虑或烦恼?
如何使用正则表达式批量添加和删除字符?
英语技术文档中如何正确使用时态?
英语技术文档中如何正确使用人称?
英语技术文档中如何正确使用无序列表和有序列表?
Markdown:写技术文档、个人博客和读书笔记都很好用的轻量级标记语言
如何为 Markdown 文件自动生成目录?
技术写作实例解析 | 简洁即是美
两分钟趣味解读 Technical Writer
若脱离理解,直译得再正确又有何意?
技术文档翻译实例解析:始于翻译,经于沟通,终于易用
优质译文不应止于正确,还要 Well-Organized
Technical Writer 处理技术文档时,如何避免内容理解问题?
Technical Writer 需要 Technical 到会写代码吗?
如何利用 GitHub Pages 和 Hugo 轻松搭建个人博客?
写在入职技术型创业公司 PingCAP 一个月之后
揭秘 Technical Writer 的工作环境 | 加入 PingCAP 五个月的员工体验记