この質問に何度も回答しましたが、私のプロジェクトでこの質問を使用する方法がわかりません。
複数のPHPファイルがあり、11行と12行の間に新しい文字列を追加したいと思います。追加したい文字列です。
exec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');
私はこれが行く方法だと思います(単一ファイルの場合は複数のファイルの場合はファイルの代わりに* .phpを使用します)。
sed '12i\
exec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');
' file.php
私が得るもの:
[1] 29234
bash: $');\n': command not found
だから私はbashがexecコマンドや他のものを実行すると思います。
スペースに似た内容を含む「長い」文字列をどのように追加しますか? '命令が台無しになると思いますか?
PS:「」または「」を追加してもポニーをだますことはできません。
ボーナス:
また、11行目に何かを「追加」する必要があります。
exec('/var/www/streams/taketv.sh');
これに関して
exec('/var/www/streams/taketv.sh > /dev/null 2>/dev/null &');
可能であれば、すべての.phpファイルに適用してください。いつも11番目に減らします。変更される唯一のことは、「taketv.sh」から「abc.sh」またはそれに似たものです。
この組み合わせに"'); "が初めて登場したので、次のように試してみました(テストで1つのファイルのみ)。
sed -i "s/');/ > /dev/null 2>/dev/null &');" TakeTV.php
私はmikeservが言ったものを使うべきだと思います。試してみましたが成功しませんでした。
sed -i 's\
'\'');/'\''/'\'' > /dev/null 2>/dev/null &');'\''
私の計画は、「古い単語」と「新しい単語」を閉じる引用符で設定することでしたが、正しく適用されていないようです!
答え1
複数のタイプの引用符を使用するか、エスケープする必要があります。
sed -i "12iexec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');" *.php
ボーナス:
sed -i "s|exec('/var/www/streams/taketv.sh');|exec('/var/www/streams/taketv.sh > /dev/null 2>/dev/null \&');|"
答え2
sed '12i\
exec('\''/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &'\'');
' file.php
内容全体を引用する必要があります。
問題は、引用符付き文字列内に引用符を挿入しようとしていることです。これは機能しますが、引用符を引用する必要があります。
command 'begin quoted arg'\''
close quotes
backslash quote the apostrophe
open quotes again
'\'' end quoted arg'
ただし、次のことなく行うことができます。
sed -e'11s|.)[^)]*$| >/dev/null 2>/dev/null&|p' \
-e'11s|www.*sh|www/scripte/autostandby.sh|' <in >out
a
ただし、pend、i
nsert、またはhangeを使用している場合は、c
質問で実行したいことをお勧めします。これらのコマンドは、コマンドとコマンドの間に改行区切り文字が必要になるように指定されます。テキスト彼らが取る主張。