Linux查找并替换: how to escape single quotes in strings?

标签 linux shell command-line

这方面完全是新手,所以这里是行不通的:

find . -type f -exec sed -i 's/\$_SESSION['valOne']"/\$valTwo,"/g' {} +

虽然它应该递归替换,但在它所经历的所有目录中:

$_SESSION['valOne'] into just: $valTwo

我已经这样做过很多次了,但似乎这些引号对我来说太困惑了。 非常感谢这里的任何帮助。

最佳答案

如果我理解您正在尝试执行的操作(文字替换),那么您需要单引号字符串,以便 shell 不会尝试解释其内容,然后对字符串中的每个单引号使用 '\'' 并转义任何 BRE 元字符(即您的情况下的 []):

find . -type f -exec sed -i 's/$_SESSION\['\''valOne'\''\]"/$valTwo,"/g' {} +

关于Linux查找并替换: how to escape single quotes in strings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984232/

相关文章:

linux - 通过命令行将立体声声道音频文件仅转换为左声道

unix - 相当于 DOS 中的 unix ``(反引号)?

iphone - 如何检测TCP连接丢失?

bash - 将文件名分配给shell中的变量

linux - ls 命令在主目录中无法正常工作 (Mac OS X 10.7.5)

linux - 无法使用 set -eo pipefail 在管道中成功调用任何外部 shell 脚本

c - 如何在 C 中使用 pstree 显示子进程

mysql - 创建和运行存储过程的权限

regex - 在 shell 脚本中替换字符串所需的正则表达式

c - 用C创建外壳。如何实现输入和输出重定向?