【问题标题】:Search and Replace under linux?linux下的搜索和替换?
【发布时间】:2017-09-05 00:08:09
【问题描述】:

我尝试了以下但没有添加''这个例子

我想将FILENAME_LOGIN 替换为'login.php'

试过这个:

grep -r "login.php" -l | tr '\n' ' ' | xargs sed -i 's/"login.php"/'login.php'/g'

但是,它给了我login.php 而不是'login.php'

谢谢

【问题讨论】:

  • 未经测试,但尝试转义单引号:xargs sed -i 's/"login.php"/\'login.php\'/g' - 或双转义:xargs sed -i 's/"login.php"/\\'login.php\\'/g'
  • 无论您尝试转义多少次,都不能在单引号分隔的脚本中包含单引号。

标签: linux sed grep


【解决方案1】:

您只需要sed 即可:

sed -i -e "s/FILENAME_LOGIN/'login.php'/g" /your/file

【讨论】:

    【解决方案2】:

    我想通了:

    find ./ -type f -exec sed -i -e 's/FILENAME_LOGIN/'login.php'/g' {} \;
    

    【讨论】:

    • 是的,这将搜索任何子目录中的文件,很好! :)
    • 它不会在文本周围添加单引号。
    【解决方案3】:
    find ./ -type f -exec sed -i -e 's/FILENAME_LOGIN/'\''login.php'\''/g' {} \;
    

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些即时帮助。一个正确的解释would greatly improve 其教育价值通过展示为什么这是一个很好的解决问题的方法,并将使它对未来有类似但不相同的问题的读者更有用。即使像“你忘了引用 ' 字符”这样简单的事情也会有很大的改进。
    猜你喜欢
    • 2012-12-25
    • 1970-01-01
    • 2011-07-08
    • 2014-06-24
    • 2011-12-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多