regex - 为 html 文件中的所有媒体链接添加前缀

标签 regex bash unix sed

我试图在 HTML 文件中的所有图像之前插入绝对路径,如下所示:

<img src="/media/some_path/some_image.png"> to <img src="{ABS_PATH}/some_path/some_image.png">

我尝试了以下正则表达式来识别行:

egrep '(src|href)="/media([^"]*)"'

我想使用 sed 进行这些更改,但是上面的正则表达式不起作用,有什么提示吗?

 sed 's#(src|href)="/media([^"]*)"##g'

sed:-e 表达式 #1,字符 32:“s”的未知选项

编辑: 好的,现在我有:

echo 'src="/media/some_image.png"' | "egrep -o '(src|href)="/media([^"]*)"' | sed 's/(src|href)=\"\/media([^"]*)\"//g'

Sed 应该匹配字符串,但事实并非如此

最佳答案

  1. sed 不理解 ERE(扩展正则表达式),只理解 BRE(基本正则表达式)。 GNU sed 有“-r”选项可以打开 ERE。

  2. 您应该更改正则表达式的分隔符,因为正则表达式中有斜杠,如下所示:

    sed -r 's#(src|href)="/media([^"]*)"##g'
    

您几乎可以使用任何标点符号作为分隔符。

关于regex - 为 html 文件中的所有媒体链接添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10186014/

相关文章:

linux - 使用 unix 脚本向逗号分隔文件添加空/零值

javascript - 日期的正则表达式模式匹配

c - sscanf 中的正则表达式有长度限制

javascript - 如何检索字符串中每对可能的数字的匹配项?

bash 发现将 * 视为 *

linux - 如何将变量值从循环 A 更新到另一个循环 B - 在 bash 中

linux - fork wget 具有控制特定下载的能力

perl - 如何将在另一个Perl脚本中执行的Perl脚本的输出重定向到文件?

linux - 在 Linux 上删除当前目录

regex - 如何计算只有换行符的行?