sed 在 markdown 文件中将绝对值转换为相对值 link
Sed to convert absolute to relative link in markdown file
我有几个降价文件,我需要将其中的图像的绝对 link 替换为相对 link。
假设:
- 图像语法仅在 markdown 中,即
![]()
而不是 HTML 或任何其他格式
- 所有图片路径都以图片目录结尾,
abc/xyz/images/sample.png
示例:
绝对link:

应替换为:

我想到了以下步骤:
- 识别以
![
开头的行(忽略极端情况)
- 遍历
()
中的文本
- 将倒数第二个
/
之前的所有内容替换为空字符串
如何使用 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).
我有几个降价文件,我需要将其中的图像的绝对 link 替换为相对 link。
假设:
- 图像语法仅在 markdown 中,即
![]()
而不是 HTML 或任何其他格式 - 所有图片路径都以图片目录结尾,
abc/xyz/images/sample.png
示例:
绝对link:

应替换为:

我想到了以下步骤:
- 识别以
![
开头的行(忽略极端情况) - 遍历
()
中的文本
- 将倒数第二个
/
之前的所有内容替换为空字符串
如何使用 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).