sed 在 markdown 文件中将绝对值转换为相对值 link

Sed to convert absolute to relative link in markdown file

我有几个降价文件,我需要将其中的图像的绝对 link 替换为相对 link。

假设:

示例:

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

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

我想到了以下步骤:

  1. 识别以 ![ 开头的行(忽略极端情况)
  2. 遍历()
  3. 中的文本
  4. 将倒数第二个 / 之前的所有内容替换为空字符串

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

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

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

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

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

至于-E,好像是POSIX:

       -E, -r, --regexp-extended

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