2013-06-02 2 views
0

Я хочу написать следующий код в команде «sed -i».Команда SED: не будет вставлять строку, которую я хочу

Я пытаюсь следующую команду:

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"); 
} 

Когда я делаю это, он не будет вставлять и получить «>» вещь в оболочке.

Итак, как я должен это делать?

ответ

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

есть больше ошибок - версии ниже исправляет их

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 
Смежные вопросы