0

我想将以下代码写入“sed -i”命令。

我正在尝试以下命令:

sed -i '2s/^/if \(\$_SERVER[\"REQUEST_URI\"\] == \'/site/template.php\'\) \{\$name=mysql_result\(\$result,\$i+2,\"Name\"\);\$auth=mysql_result\(\$result,\$i+2,\"Author\"\);\$date=mysql_result\(\$result,\$i+2,\"Date\"\);body=mysql_result\(\$result,\$i+2,\"Content\"\);\}\n' ../site/written.php

这是一段代码:

if ($_SERVER["REQUEST_URI"] == '/site/template.php') {
        $name=mysql_result($result,$i+1,"Name");
        $auth=mysql_result($result,$i+1,"Author");
        $date=mysql_result($result,$i+1,"Date");
        $body=mysql_result($result,$i+1,"Content");
}

当我这样做时,它不会在 shell 中插入并得到一个 "> " 的东西。

那么我应该怎么做呢?

4

2 回答 2

0

把它放在双引号中,以获得第一个结果。

更多细节:也逃/进去/site/template。也逃\\n进去了\n。添加/到结束最终确定搜索表达式。

sed -i "2s/^/if \(\$_SERVER[\"REQUEST_URI\"\] == \'\/site\/template.php\'\) \{\$name=mysql_result\(\$result,\$i+2,\"Name\"\);\$auth=mysql_result\(\$result,\$i+2,\"Author\"\);\$date=mysql_result\(\$result,\$i+2,\"Date\"\);body=mysql_result\(\$result,\$i+2,\"Content\"\);\}\\n/" ../site/written.php
于 2013-06-02T18:30:07.570 回答
0

还有更多错误 - 下面的版本更正了它们

sed -i "s/^/if \(\$\_SERVER[\"REQUEST_URI\"\] == \"\/site\/template.php\"\) \{\n\t\$name=mysql_result(\$result,\$i+1,\"Name\");\n\t\$auth=mysql_result(\$result,\$i+1,\"Author\");\n\t\$date=mysql_result(\$result,\$i+1,\"Date\");\n\t\$body=mysql_result(\$result,\$i+1,\"Content\");\n}\n/" ../site/written.php
于 2013-06-02T18:33:56.667 回答