ファイルの特定の行にテキストを挿入しますか?特殊文字を含む

ファイルの特定の行にテキストを挿入しますか?特殊文字を含む

この質問に何度も回答しましたが、私のプロジェクトでこの質問を使用する方法がわかりません。

複数の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 \&');|" 

おすすめ記事