【发布时间】:2013-10-30 20:27:51
【问题描述】:
副标题:“我是来学习的。”
我需要将我的几个链接集合从 Markdown 转换为另一种格式(具体来说,通过 this script 将文件中的每一行作为单个笔记发送到 Evernote)。
我的示例文件都是这样的:
* [REF_1](URL)
* [REF_2](URL)
* [REF_3](URL)
编辑:或更准确地说:
* [Koken Installtion Help](http://help.koken.me/customer/portal/articles/632102-installation)
* [A couple of Sass functions](http://hugogiraudel.com/2013/08/12/sass-functions/)
* [Chris Coyier's Favorite CodePen Demos](http://davidwalsh.name/chris-coyiers-favorite-pens)
……这是我的作战计划:
- 解析每一行
- 去除前导星号/连字符/加号后跟空格
^[\*\-\+]\s - 匹配
[REF]的内容(方括号之间的所有内容)与正则表达式(?<=\[)(.*)(?=\])并将其设置为变量${titel} - 匹配
[URL]的内容(括号之间的所有内容)与正则表达式(?<=\()(.*)(?=\))并将其设置为变量${url} - 如下例所示格式化新输出。
- 保存到变量/剪贴板/标准输出(←我不知道哪个效果最好)并在上面运行
markdown2evernote.rb - 所有线路都发送? → 完成。
示例(见第 5 点):
Notebook: ${notebook}
Title: ${title}
Url: ${url}
Keywords: ${keywords}
Content Area
Will use the $title and $url variable here again.
坦率地说,我还没有走多远。我已经被困在第二点,因为我不知道如何让正则表达式工作。目前,我的 bash 脚本如下所示:
#!/bin/sh
document=~/file.txt
notebook="My test notebook"
keywords="test, demo"
cat ${document} | while read line; do \
echo "$line" | sed -e '(?<=\[)(.*)(?=\])'; \
done
我不在乎它是否是一个 sed/grep/awk 解决方案——只要它是一个 shell 脚本,我就接受它。
我还对在检查列表中的第 2 点和第 3 点并达到我可以将格式化输出移交给 ruby 脚本的目标之后继续进行的最佳方式感兴趣。
如上所述,我有一个模糊的想法,但这是一个相当大的挑战,因为到目前为止我编写的脚本要简单得多,并且不涉及上述任何内容。
【问题讨论】:
-
markdown 真的可以用正则表达式解析吗?如果没有,你很快就会遇到两个问题:你原来的问题,加上正则表达式问题。
-
你的意思是
#!/bin/sh,对吧?如果这是您真正打算使用的,最好明确调用#!/bin/bash。仅调用sh可能会导致不同操作系统出现问题。祝你好运。 -
@shellter 哦,是的,那是个错误。我在我的编辑器中准备了这个问题,并取消了所有行的注释……哈希也消失了。双是:我打算使用
#!/bin/bash。会解决的。