我有一些 Markdown 文件,其中包含如下链接:
[Royal Enfield Flying Flea](RE Flying Flea)
我正在尝试将链接的第二部分编码为
[Royal Enfield Flying Flea](RE%20Flying%20Flea)
我正在使用 sed,我认为这是最适合这项工作的工具。我已经使用它在文件中进行了一些其他转换。但我可以使用另一个,比如 awk,如果有人认为它更好的话。
我还设法使用
sed -E 's/\[([A-Za-z0-9 ]*)\]\(([A-Za-z0-9 ]*)\)/\1\2/'
捕获字符串,但我无法找到在所选部分中进行替换的方法。只是为了展示它本来的样子。
如果有人能指出我正确的道路,我很感激。
使用 Perl 和适当的模块来转义带有特殊字符的 URL:
$ perl -MURI::Escape -pe 's/(\[.*?\])\((.*?)\)/"$1(" . uri_escape $2 . ")"/e' file
[Royal Enfield Flying Flea](RE%20Flying%20Flea%29
你可以使用
sed -E ':a;s/(\[[^][]*]\([^()[:space:]]*)[[:space:]]([^()]*\))/\1%20\2/;ta'