Sed将markdown文件中的绝对链接转换为相对链接



我得到了几个markdown文件,我需要将其中存在的图像的绝对链接替换为相对链接。

假设:

  • 图像语法仅在markdown,即![](),而不是HTML或任何其他格式
  • 所有的镜像路径都以镜像目录abc/xyz/images/sample.png
  • 结束

例子:

绝对链接:![alt text](https://github.com/a/b/c..../images/sample.png)

应替换为:![alt text](images/sample.png)

我想到了以下步骤:

  1. 识别以![开头的行(忽略角落大小写)
  2. 遍历()中的文本
  3. 用空字符串
  4. 替换倒数第二个/之前的所有内容

我如何使用sed实现它或任何其他更好的方法?

试试这个,它实现了您概述的逻辑:

sed 's|(![[^]]+]()[^)]+/([^)]+/[^)]+))|12|' input

使用-E选项只保存几个字符:

sed -E 's|(![[^]]+]()[^)]+/([^)]+/[^)]+))|12|' input

关于-E,它看起来像POSIX:

-E, -r, --regexp-extended
use extended regular expressions in the script (for portability use
POSIX -E).

相关内容

  • 没有找到相关文章

最新更新