バックアップWebサーバーを作成していますが、バックアップサーバーにrootユーザーが1人しかいないことを望みます。したがって、すべてのデータベースを移動したmysqli_connect(...)
後db.txt
。
私はすでに次のように書いています。
beg="mysqli_connect("
end=");"
#need to find out the database
db="123"
new="'localhost','root','pass','$db'"
cat db.txt | sed "s/$beg.*$end/$beg$new$end/"
すべての構成を置き換えますが、データベースを見つける必要があります。$end
''と前の''の間のテキストをインポートしてこれを実行できますが,
、それをインポートするにはsedをどのように使用しますか?
入力する:
潜在的なファイル:
sadnkjnadsjknfaskdjfnlasdnfkdsa
safdjnasdkjjfasndka
asfdknjdsakjfnasjdnkfsadnjkads mysqli_connect("192.168.1.10","dave","password","DavesDB");
sdfnjnweewrewqrfgjdgnf
vncnccnvxjncvjn4wrwerewrewerwjvcnxjnvcj
mysqli_connect("192.168.1.10" , "tom" , "password" , 'TomsDB'); dsanjasdknfjansd
sakfdnjsadjkfnsa
sknfdsjdnfjsdnnqwerweq
出力:
sadnkjnadsjknfaskdjfnlasdnfkdsa
safdjnasdkjjfasndka
asfdknjdsakjfnasjdnkfsadnjkads mysqli_connect("localhost","root","rootpassword","DavesDB");
sdfnjnweewrewqrfgjdgnf
vncnccnvxjncvjn4wrwerewrewerwjvcnxjnvcj
mysqli_connect("localhost","root","rootpassword","TomsDB"); dsanjasdknfjansd
sakfdnjsadjkfnsa
sknfdsjdnfjsdnnqwerweq
答え1
データベース名を取得する必要はなく、それ自体で何かを変更することは意味がありません。変更せずにそのままにしてください。
beg="mysqli_connect("
new="'localhost','root','pass',"
sed "s/$beg\([^,]\+,\)\{3\}/$beg$new/" file
あなたが与えた例を次のように保存した場合file
:
$ sed "s/$beg\([^,]\+,\)\{3\}/$beg$new/" file
sadnkjnadsjknfaskdjfnlasdnfkdsa
safdjnasdkjjfasndka
asfdknjdsakjfnasjdnkfsadnjkads mysqli_connect('localhost','root','pass',"DavesDB");
sdfnjnweewrewqrfgjdgnf
vncnccnvxjncvjn4wrwerewrewerwjvcnxjnvcj
mysqli_connect('localhost','root','pass', 'TomsDB'); dsanjasdknfjansd
sakfdnjsadjkfnsa
sknfdsjdnfjsdnnqwerweq
その後、正規sed
表現は、後ろにカンマ()を$beg
持たない3つのインスタンスを見つけてに置き換えます。データベース名は変更する理由がないため、そのまま残ります。,
\([^,]\+,\)\{3\}
$beg$new
(
$beg
sedの拡張正規表現構文を使用できる削除によって、構文を少し簡素化することもできます。
$ sed -E "s/$beg\(([^,]+,){3}/$beg($new/" file
sadnkjnadsjknfaskdjfnlasdnfkdsa
safdjnasdkjjfasndka
asfdknjdsakjfnasjdnkfsadnjkads mysqli_connect('localhost','root','pass',"DavesDB");
sdfnjnweewrewqrfgjdgnf
vncnccnvxjncvjn4wrwerewrewerwjvcnxjnvcj
mysqli_connect('localhost','root','pass', 'TomsDB'); dsanjasdknfjansd
sakfdnjsadjkfnsa
sknfdsjdnfjsdnnqwerweq