SED在php脚本中查找/替换代码

SED在php脚本中查找/替换代码,sed,Sed,我有一个大型php脚本,其中包含以下行 $user=$\u请求['user'] 精确匹配在整个页面中只显示一次。我想把它改成 $user=urldecode($_请求['user']) 有人能建议最好的方法吗? 我在想SED,但我尝试过的一切都没有找到并替换它 有什么想法吗 感谢sed方法: sed -E "s/^(\\\$user = )(\\\$_REQUEST\['user'\])/\1urldecode(\2)/" file.php sed方法: sed -E "s/^(\\\$use

我有一个大型php脚本,其中包含以下行

$user=$\u请求['user']

精确匹配在整个页面中只显示一次。我想把它改成

$user=urldecode($_请求['user'])

有人能建议最好的方法吗? 我在想SED,但我尝试过的一切都没有找到并替换它

有什么想法吗


感谢sed方法:

sed -E "s/^(\\\$user = )(\\\$_REQUEST\['user'\])/\1urldecode(\2)/" file.php

sed方法:

sed -E "s/^(\\\$user = )(\\\$_REQUEST\['user'\])/\1urldecode(\2)/" file.php

以下内容也会对你有所帮助

sed 's/^$user = $_REQUEST\['"'"'user'"'"'\]\;$/$user = urldecode($_REQUEST\['"'"'user'"'"'\]);/'  Input_file
假设下面是输入_文件(我在这里假设)

因此,在运行上述代码之后,以下将是输出

sed 's/^$user = $_REQUEST\['"'"'user'"'"'\]\;$/$user = urldecode($_REQUEST\['"'"'user'"'"'\]);/' Input_file
^@^@^@^@00000305^@^@^@^@^@^@430^@430^@^@^@^@^@^@^@^@^@09079989530
$user = urldecode($_REQUEST['user']);
tefqfwqfb$user = $_REQUEST['user'];
wvwrjvnwvjn$user = $_REQUEST['user'];fwvwrev

以下内容也会对你有所帮助

sed 's/^$user = $_REQUEST\['"'"'user'"'"'\]\;$/$user = urldecode($_REQUEST\['"'"'user'"'"'\]);/'  Input_file
假设下面是输入_文件(我在这里假设)

因此,在运行上述代码之后,以下将是输出

sed 's/^$user = $_REQUEST\['"'"'user'"'"'\]\;$/$user = urldecode($_REQUEST\['"'"'user'"'"'\]);/' Input_file
^@^@^@^@00000305^@^@^@^@^@^@430^@430^@^@^@^@^@^@^@^@^@09079989530
$user = urldecode($_REQUEST['user']);
tefqfwqfb$user = $_REQUEST['user'];
wvwrjvnwvjn$user = $_REQUEST['user'];fwvwrev
这可能适用于您(GNU-sed):

匹配字符串,然后使用替换来修改部分字符串

注意:关闭当前的单引号sed命令,引入另一个单引号,然后开始sed命令的其余部分,即在外壳上穿孔,然后引用一个引号。

这可能适用于您(GNU-sed):

匹配字符串,然后使用替换来修改部分字符串


注意
“\'
关闭当前单引号sed命令,引入另一个单引号,然后开始sed命令的其余部分,即它在外壳上穿孔,然后引用一个单引号。

添加您尝试的代码。。。还建议在整行中使用
awk
字符串匹配,以避免必须处理元字符和您尝试的代码。。。还建议在整行使用
awk
字符串匹配,以避免必须处理元字符hanks,但值
$user=
会在页面中出现几次,其中as
$user=$\u REQUEST['user']
只出现一次。谢谢,但是值
$user=
在页面中出现了几次,其中as
$user=$\u REQUEST['user']仅显示一次。谢谢。你能告诉我为什么需要所有的引号和双引号吗@汤姆,不客气。这是一种告诉sed在sed通常的
'bla______________________
之间有一个
。意思是说,如果你简单地把
'bla_bla'bla_bla'
放在一起,那么sed会抛出错误,因为它会认为block没有完成,所以要让sed知道我们的文本中间有
'
,这已经完成了。谢谢。你能告诉我为什么需要所有的引号和双引号吗@汤姆,不客气。这是一种告诉sed在sed通常的
'bla______________________
之间有一个
。也就是说,如果你简单地把
'bla_bla'bla_bla'
放进去,那么sed会抛出错误,因为它会认为block没有完成,所以要让sed知道我们的文本中间有
'