我得到了几个markdown文件,我需要将其中存在的图像的绝对链接替换为相对链接。
假设:
- 图像语法仅在markdown,即
![]()
,而不是HTML或任何其他格式 - 所有的镜像路径都以镜像目录
abc/xyz/images/sample.png
结束
例子:
绝对链接:![alt text](https://github.com/a/b/c..../images/sample.png)
应替换为:![alt text](images/sample.png)
我想到了以下步骤:
- 识别以
![
开头的行(忽略角落大小写) - 遍历
()
中的文本 - 用空字符串 替换倒数第二个
/
之前的所有内容我如何使用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).