sed - 我的替换有什么问题?

时间:2012-05-17 10:06:29

标签: regex sed

我有300多个必须编辑的文件列表,所以我认为sed命令与find和exec一起可以帮助我。

在做错事之前(比如覆盖我不会修改的文件,或类似的东西)我决定使用sed并将其结果输出到bash而不是本地替换。

我正在搜索的字符串是:<tr><td class="button" style=" background:#040404; color:#eee9dc; font-size: 23px; padding:5px 0; text-align:center;"><a href="../Z2/C24357-0/hhcm-LASTMINUTES.html" style=" text-decoration:none; cursor:pointer; color:#eee9dc">Offerte & LastMinute</a></td></tr>

我只想用<a href="../Z2/C24357-0/hhcm-LASTMINUTES.html

替换该部分<a href="../../../special_offers.php?lang=it"

由于我是一个关于regex的菜鸟,我会看一下web page,以一种体面的方式驱使我进入正则表达式的论证。

现在,我尝试了类似的东西(在一个文件上,只是为了以“安全”的方式查看输出)

 sed s/\<a.*LAST.*html\"
      /\<a href="\.\.\/\.\.\/\.\.\/special_offers\.php\?lang=en"/ 
      C25030-9_3/hhcm-Solo_per_due.html

我收到了这个错误:sed: -e expression #1, char 20: unterminated s' commandsed表达式不正确,但我不知道错误是在replacement部分还是在其他地方。

感谢您的时间和精力。

S上。

修改

感谢您的回答,我解决了这个问题

sed 's/<a.*LAST.*html\"/\<a href="..\/..\/..\/special_offers.php?lang=en"/' C25030-9_3/hhcm-Solo_per_due.html

1 个答案:

答案 0 :(得分:1)

首先,您似乎需要将整个sed表达式(s/.../.../)放在单引号中,其次,您忘记了最后的/ (请参阅编辑),第三,不要忘记,只有当整个模式字符串在一行上时,替换才会起作用。

编辑:关于s命令的更多信息(例如see here):它是s/old/new/以及最后/之后的可能标记。你的命令看起来像s/something/somethingelse/somethingelse,我认为它比它应该的更多。