我有一系列带有 yaml 标头的文件,后跟 markdown 字幕,看起来像这样:
最小示例输入文件:
---
layout: post
tags:
- might
- be
- variable
- number
- of
- these
category: ecology
---
my (h2 size) title
------------------
some text
possible other titles we don't want
-----------------------------------
more text more text
正如我试图指出的那样,YAML 标题的大小和出现第一个字幕的行会有所不同,所以我不能指望提前知道任何更改的行号。我想确定第一个标题(也应该是结束后的第一个非空白文本---
。然后我想将该文本写入 YAML 标题,就像我们从正文中删除的图块一样,其余文本保持不变:
目标输出文件
---
layout: post
tags:
- might
- be
- variable
- number
- of
- these
categories: ecology
title: my (h2 size) title
---
some text
possible other titles we don't want
-----------------------------------
more text more text
似乎这对于 sed/awk 等来说应该是一项合理的任务,但我对这些工具的使用非常初级,我无法把这个弄糊涂。
我看到我可以在单词之间搜索sed 'word1/,/word2/p
,但不确定如何将其转换为在第二次出现^---$
和第一次出现之间搜索^----+-$
(超过 3 个破折号的行);然后如何删除多余的空白行,然后粘贴到上面的 yaml 问题中。
也许有这么多步骤 perl 会比 sed 更好,但我对它的熟悉程度更低。感谢您的任何提示或建议。