SED - 将 URL 前缀添加到随机 pdf 文件名

SED - 将 URL 前缀添加到随机 pdf 文件名

我有一个 html 文件,在上传到网络之前我会在本地预览。其中有本地 pdf 文件的链接。要上传,我必须在 pdf 前面添加一个网址。

这是我本地 html 文件的示例 -

<a href="randomFilename.pdf">Article HERE</a>

这就是我的网络版本需要修改的方式 -

<a href="https://www.site.com/folder1/folder2/randomFilename.pdf">Article HERE</a>

因此https://www.site.com/folder1/folder2/需要添加到完全随机的 pdf 文件名中。我不知道SED是否可以做到这一点。我们可以搜索“pdf”,但是如何向后添加这个前缀呢?我搜索了 50 sed 命令页面,但找不到执行此操作的线索。

答案1

最简单的事情就是捕获捕获组中的文件名。-E设置标志后,您可以使用普通括号。 (或者您可以使用\(and\)而不使用该标志。)然后您可以在替换中-E引用它。\1

sed -E 's#<a href="([^"]*)\.pdf"#<a href="https://www.site.com/folder1/folder2/\1.pdf"#g' filename.html

这会查找以 开头的模式,<a href="后跟一系列除双引号(捕获在捕获组中)之外的任何内容,后面是并将其替换为捕获组之前的.pdf"相同内容。https://www.site.com/folder1/folder2/

我假设您总是使用双引号来打开和关闭 URL,并且不存在任何已包含协议、域等的 pdf 链接。

相关内容