【问题标题】:Grep - find and replaceGrep - 查找和替换
【发布时间】:2013-07-26 19:16:04
【问题描述】:

我正在尝试将样式表中的十六进制代码替换为变量 - 我正在尝试这样做:

grep -rl '#e5f6fc' mydirectory | xargs sed -i 's/#e5f6fc/$highlight-blue/g'

我假设“#”、“$”和“-”正在做一些事情导致这个错误。我试图研究如何用 grep 输入表达式,但我找不到任何可以帮助我的东西。任何帮助将不胜感激。我得到的错误是:

正则表达式中的未终止替换

【问题讨论】:

    标签: shell unix sed grep


    【解决方案1】:

    您在 grep 命令中缺少单引号,应该是:

    grep -irl '#e5f6fc' mydirectory | xargs sed -i.bak 's/#e5f6fc/$highlight-blue/Ig'
    

    PS:我做了 grep 和 sed 忽略大小写

    【讨论】:

    • 我很抱歉,当我在堆栈溢出中格式化它时,我可能已经删除了引用。我输入了这个: grep -irl '#e5f6fc' mydirectory | xargs sed -i 's/#e5f6fc/$highlight-blue/g' 和 grep -rl '#e5f6fc' mydirectory | xargs sed -i 's/#e5f6fc/$highlight-blue/g' 我仍然得到'正则表达式中未终止的替换'
    • @Jamie:你的 sed 版本是什么?因为你编辑的命令对我来说很好用。
    • 你可以试试:grep -irl '#e5f6fc' mydirectory | xargs sed -i.bak 's/\#e5f6fc/\$highlight-blue/g'
    • 我尝试使用反斜杠 - 但我将使用您添加的下一个命令再试一次。
    • @adbar:较新的 sed 可以在没有 -i 的扩展的情况下使用,但较旧的 sed 版本需要使用 -i 的参数。
    猜你喜欢
    • 1970-01-01
    • 2014-02-11
    • 2011-09-04
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    相关资源
    最近更新 更多