我需要把markdown里面图片链接转换成本地链接。这是由ai生成的命令,测试好用
sed -E "s/!\[([^]]+)\]\(([^)]+)\)/)/g" input.md > output.md
只能linux系统下运行,因为只有linux系统有$命令替换用法,basename是一个获取文件名小工具,-E是启用扩展正则表达式。
解析
markdown里面的图片格式是用法。所以要匹配的就是这种格式,然后转成本地地址
匹配
!\[([^]]+)\]\(([^)]+)\)是匹配部分
!匹配!,\[匹配[,([^]]+)匹配任何不是]的部分直到遇到],\]匹配]。
\(匹配(,([^)]+)匹配任何不是)的部分直到遇到),\)匹配)。
替换
)是替换部分
!是!,Converted是自己加的本地路径名字。\1是捕获组的第一部分也就是第一个()里面的图片描述。\2是捕获组第二部分,也就是第二个()里面的地址部分。$(basename \2)是命令替换,用basename把图片地址解析成图片名字。
结果
[图片](http:www.abc.com/test.jpg)会被替换成[图片](Converted/test.jpg)
问题
用sed处理文件里包含中文时卡死。并且文件编码为utf-8。简单的办法就是把中文字符文件转换成gbk格式,也就是windows文本编辑器的另存为,ANSI格式。或者用iconv工具转换成gbk格式文件。