【问题标题】:bash sed command failing to find and replacebash sed 命令无法查找和替换
【发布时间】:2013-05-21 13:13:56
【问题描述】:

我无法获取以下 bash sed 命令来查找和替换,因为它无法匹配:

$ sed -i.bak 's,\"js/lj.main.min.js\?\d{14}\","js/lj.main.min.js?20130521080532",g' index.html

$ sed -i.bak 's,\"js/lj\.main\.min\.js\?\d{14}\","js/lj.main.min.js?20130521080532",g' index.html

在一个文本文件上,包括:

<script src="js/lj.main.min.js?20130520120515"></script>

应该改为:

<script src="js/lj.main.min.js?20130521080532"></script>

当我在http://fiddle.re/m7x56 中尝试时,正则表达式本身可以工作

怎么了?

【问题讨论】:

  • 这会导致它出错:sed: -e expression #1, char 1: unknown command: `.'

标签: bash sed


【解决方案1】:

这个表达对我有用:

's,"js/lj\.main\.min.\js?[0-9]\{14\}","js/lj.main.min.js?20130521080532",g'

请注意,有许多版本的正则表达式库。某些功能(\d)可能不受支持,某些特殊字符的反斜杠可能不同({}? 等)

【讨论】:

    猜你喜欢
    • 2018-10-01
    • 2020-02-03
    • 2012-12-29
    • 2017-12-05
    • 2021-12-15
    • 1970-01-01
    • 2010-11-29
    • 2015-04-01
    • 2012-12-30
    相关资源
    最近更新 更多