Python 在标记文档中为所有相关图像链接添加url

Python 在标记文档中为所有相关图像链接添加url,python,awk,sed,markdown,marko,Python,Awk,Sed,Markdown,Marko,我有一堆带有相对和绝对图像目标的降价文档。e、 g This is some text ![optional caption](/sub/folder/image.png) And more text ![](https://example.com/cool_image.png) 我想为每个相对图像预先添加一个URL,例如将上面的更改为 This is some text ![optional caption](https://some-image-host/image-host-s

我有一堆带有相对和绝对图像目标的降价文档。e、 g

This is some text

![optional caption](/sub/folder/image.png)

And more text

![](https://example.com/cool_image.png)

我想为每个相对图像预先添加一个URL,例如将上面的更改为

This is some text

![optional caption](https://some-image-host/image-host-subpath/sub/folder/image.png)

And more text

![](https://example.com/cool_image.png)

但最好不要将
/sub/folder/
硬编码到替换脚本中(我目前就是这样做的)

使用
awk
sed
是否有一种聪明的方法来实现这一点,或者这是一个坏主意,因为降价具有比预期更多的边缘案例

我在这方面取得了一些进展

导入marko
以f:s=f.read()的形式打开(“myfile.md”)
doc=marko.inline.parser.parse_inline
对于欧盟汇率(doc)中的i,e:
如果类型(e)==marko.inline.Image:
如果不是e.dest.startswith(“http”):
文件[i]。目的地=”https://some-image-host/image-host-subpath/“+doc[i].dest
它会查找所有图像并用URL更新每个相对图像的目的地,但我不太确定如何将此内联元素列表重新呈现为降价字符串,我想我会先在这里发布,然后再重新发明轮子,以防有更简单的方法


TIA获取任何帮助。

此命令将在不更改原始文件的情况下执行此操作:

sed 's_\(^!\[.*\](\)_\1https://some-image-host/image-host-subpath_' <input_file
该命令的工作方式如下所示:

  • 我使用了
    \uuu
    作为模式分隔符,而不是更常见的
    /
    , 因为这意味着我不必转义路径名中的每个
    /
  • 这个模式
    ^\[.*\](
    与要添加路径的位置匹配
  • 我把上面的模式放在
    \(
    \)
    之间,以便于记忆 稍后
  • 它被添加回
    \1
    ,后跟路径
一种更简单的方法是简单地用
])您在此处的url

sed 's_](_](https://some-image-host/image-host-subpath/_' <test

sed's_uu2;](2;)(https://some-image-host/image-host-subpath/_'也许您想扩展LHS匹配以包括相对url的
/
?非常感谢!我认为删除
^
以识别带有
的图像可能是可以的![
(并不是所有的图片都在行的开头,尽管它们可能应该在行的开头)。很高兴这有帮助-您可以使用
sed's\(^\s*!\[…
sed 's_](_](https://some-image-host/image-host-subpath/_' <test