SED - 在所有 jpg 文件前加上完整 URL

SED - Prefix all jpg files with full URL

我有一个 HTML 文件,其中包含图像的本地路径 - /image1.jpg 或 /image2.png

我想使用 SED 为所需的 url 添加前缀 - https://example.com.

想要的结果是https://example.com/image1.jpg

我试过了 -

sed "s#.*.jpg#https://example.com/*.jpg#g" index.html > index2.html

结果是 index2.html,它找到了图像名称,但我的替代品没有使用这些名称。如何保留匹配名称?

有什么建议吗?

示例输入 -

<img src="Image1.jpg" alt="boat" /><figcaption>boat</figcaption>

示例输出 -

<img src="https://example.com/image1.jpg" alt="boat" /><figcaption>boat</figcaption>

使用sed

$ sed 's#="#&https://example.com#' input_file
<p><img src="https://example.com/image1.jpg" /></p>

您可以使用

sed 's~\(="\)\([^"]*\.jpg"\)~https://example.com/~g'

详情:

  • \(="\) - 第 1 组 (</code>):<code>=" 字符串
  • \([^"]*\.jpg"\) - 第 2 组 (</code>):除 <code>" 之外的任何零个或多个字符,然后是 .jpg" 子字符串。

参见online demo

#!/bin/bash
s='<img src="Image1.jpg" alt="boat" /><figcaption>boat</figcaption>'
sed 's~\(="\)\([^"]*\.jpg"\)~https://example.com/~g' <<< "$s"

输出:

<img src="https://example.com/Image1.jpg" alt="boat" /><figcaption>boat</figcaption>

这就是最终轻松完成的工作。感谢大家的投入。试图让它在 Windows 上的批处理文件中工作很痛苦。

命令行-

sed -f sedscript.sed index.html > index2.html

sedscript.sed

的内容
s#src="#&https://example.com/#g