【问题标题】:Find and replace string with "/" recursively in a directories in RHEL 7.4在 RHEL 7.4 的目录中递归查找和替换字符串为“/”
【发布时间】:2018-10-22 15:46:37
【问题描述】:

我必须在 RHEL 7.4 的目录中递归地查找并替换所有文件中出现的字符串 /eOffice/eofficev6/eOffice/SAPS/eofficev6

问题是我使用sed -i,但我的字符串也包含/ 斜杠。

如何替换所有具有/的字符串?

【问题讨论】:

标签: linux string bash sed redhat


【解决方案1】:

你有两种方法可以实现你想要的。

一:转义斜线(例如sed -i "s/\/eOffice\/eofficev6/\/eOffice\/SAPS\/eofficev6/" file)。

二:改变分隔符(例如sed -i "s|/eOffice/eofficev6|/eOffice/SAPS/eofficev6|" file)。

【讨论】:

    【解决方案2】:

    你可以的

    sed -i 's/\(\/eOffice\)\(\/eofficev6\)/\1\/SAPS\2/' input_file_name
    

    "/eOffice""eofficev6" 部分被组合在一起,"SAPS" 插入在它们之间。

    例如,如果输入是:

    /eOffice/eofficev6
    

    输出将是

    /eOffice/SAPS/eofficev6
    

    正斜杠用\s 转义。

    或者不分组,

    sed -i 's/\/eOffice\/eOfficev6/\/eOffice\/SAPS\/eOfficeb6/' input_file
    

    【讨论】:

    • 我很乐意找出我的错误并从中吸取教训。任何关于为什么这个答案不好的问题?
    • 我认为这个答案不仅仅是详尽的!我不知道组[:@ OP:您应该将此答案标记为正确的答案!
    猜你喜欢
    • 2015-10-18
    • 2012-03-12
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2015-07-23
    • 2010-09-12
    相关资源
    最近更新 更多