我正在尝试将我的个人 wiki 从 Foswiki 转换为 Markdown 文件,然后再转换为 JAMstack 部署。Foswiki 使用平面文件并以以下格式存储元数据:
%META:TOPICINFO{author="TeotiNathaniel" comment="reprev" date="1571215308" format="1.1" reprev="13" version="14"}%
我想使用 git repo 进行版本控制,并且会担心稍后将其链接到文章元数据。此时,我只想将这些块转换为如下所示的内容:
---
author: Teoti Nathaniel
revdate: 1539108277
---
经过一些调整后,我构建了以下正则表达式:
author\=\['"\]\(\\w\+\)\['"\]\(\?\:\.\*\)date\=\['"\]\(\\w\+\)\['"\]
根据regex101这可行,我的两个捕获组包含所需的结果。尝试实际运行它:
perl -0777 -pe 's/author\=\['"\]\(\\w\+\)\['"\]\(\?\:\.\*\)date\=\['"\]\(\\w\+\)\['"\]/author: $1\nrevdate: $2/gms' somefile.txt
让我只有这个:
>
我之前的尝试(如果细节没有按特定顺序中断)看起来像这样并正确执行:
perl -0777 -pe 's/%META:TOPICINFO\{author="(.*)"\ date="(.*)"\ format="(.*)"\ (.*)\}\%/author:$1 \nrevdate:$2/gms' somefile.txt
我认为这是一个转义字符问题,但无法弄清楚。我什至去找了这个工具来确保它们是正确的。
强制我理解这里的方式既低效又令人沮丧,所以我向社区寻求帮助。