SED命令:不会插入我想要的字符串

时间:2013-06-02 18:13:05

标签: php linux bash shell sed

我想将以下代码写入“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中插入并获得“>”事物。

那我该怎么做?

2 个答案:

答案 0 :(得分:1)

用双引号括起来,得到第一个结果。

更多详细信息:也可以逃离/中的/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

答案 1 :(得分:1)

还有更多错误 - 以下版本更正错误

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