如何使用 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;
我正在编写一些 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;