我想将以下代码写入“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中插入并获得“>”事物。
那我该怎么做?
答案 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