这方面完全是新手,所以这里是行不通的:
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/