如何使用 sed 查找和替换带有特殊字符的文本

How to find and replace text with sed but with special characters

我正在编写一些 bash 脚本,我需要替换另一个文件中的一些文本 我需要在 myfile

中查找并替换以下文本
$conf['extra_login_security'] = true;

与:

$conf['extra_login_security'] = false;

所以我尝试了以下方法:

sed -i 's_extra_login_security'] = true_extra_login_security'] = false_g' myfile.php

但它不起作用我收到以下错误:

sed: -e expression # 1, character 15: unknown option for the `s' command

你能帮我看看我做错了什么吗?

您可以使用

sed "s/\(extra_login_security'] = \)true/false/" myfile.php

详情:

  • \(extra_login_security'] = \) - 捕获组 1:extra_login_security'] = 字符串
  • true - 固定字符串
  • false - 替换:第 1 组值 + false 子字符串。

参见 online demo:

#!/bin/bash
s="$conf['extra_login_security'] = true;"
sed "s/\(extra_login_security'] = \)true/false/" <<< "$s"
# => $conf['extra_login_security'] = false;