Php和unix grep反斜杠不起作用
我有一个相当简单的问题,我似乎找不到解决办法。我想删除我网站上目录中所有文件中包含特定字符串的行。但该字符串包含双引号。我一直在尝试使用反斜杠寻找解决方案,但它不起作用 我要替换的字符串是:Php和unix grep反斜杠不起作用,php,regex,unix,sed,Php,Regex,Unix,Sed,我有一个相当简单的问题,我似乎找不到解决办法。我想删除我网站上目录中所有文件中包含特定字符串的行。但该字符串包含双引号。我一直在尝试使用反斜杠寻找解决方案,但它不起作用 我要替换的字符串是:session_register(“c$key”) 我正在使用以下php和unix代码: $command = "sed -i '/session_register(\"c$key\")/d;' ./*"; $output = shell_exec($command); 我想删除此行,因为会话注册已过期。
session_register(“c$key”)代码>
我正在使用以下php和unix代码:
$command = "sed -i '/session_register(\"c$key\")/d;' ./*";
$output = shell_exec($command);
我想删除此行,因为会话注册已过期。
它没有做任何事情,但不会给我一个错误。问题是什么?我应该如何反斜杠
非常感谢 您还需要双重转义$
,因为$
是特殊的正则表达式符号,表示输入结束。对于$命令
字符串分配,也使用单引号而不是双引号
试试这个:
$command = 'sed -i.bak \'/session_register("c\\$key")/d;\' ./*';
$output = shell_exec($command);
您会遇到什么错误?没有错误,只是什么都没有发生。正确的“未切换”版本是什么(即,当您在命令行中键入它时可以工作的版本)?类似于sed-i'/session\u寄存器(“cfoo”)/d./*
?session\u寄存器(“c$key”);是我想要删除的字符串吗?如果您尝试直接在shell上运行sed命令,看看它是否有效?