我编辑markdown文件并插入图像。内容就像
1. This is some content
![](directory/regist.png)
2. This is some other content ![](directory/user_registered.png)
我想将内容解析为Hexo资产图片格式。想要的内容就像
1. This is some content
{% asset_img regist.png %}
2. This is some other content {% asset_img user_registered.png %}
我可以使用一些编程代码(例如java或python)逐行读取文件并找到![](
模式,然后提取文件名并合并为新字符串,例如{% asset_img regist.png %}
。但这似乎并不明智。
我还搜索sed
并表达速成。我现在正在研究sed -i -E 's/!\[(.*?)\]((.*?)\/?(.*?))/\{% asset_img $3 %\}/g' test.md
。但是它不起作用,它会生成新文件test.md-E
,但没有任何更改。我如何实现我的目标?
答案 0 :(得分:4)
您可以尝试:
sed -i.bak 's/!\[]([^()]*\/\([^)]*\))/{% asset_img \1 %}/g' file
正则表达式细目:
!\[]
从字面上匹配![]
(
匹配左括号
[^()]*\/
匹配并包括最后一个斜杠\(
开始捕获第1组
[^)]*
匹配下一个右括号\)
捕获第1组结束)
匹配右括号