2016-04-14 6 views
0
sed "s/eth0/$change/" < ifcfg-eth0 

入力ファイルの主な内容を置き換えます再帰的なファイルの実行については、私たちのファイルが含まれてい

DEVICE=eth0 

は私が入力した任意の入力、私はプログラムを実行するたびにeth0を交換したいです。 具体的には、上記のコマンドは以下を実行します:

プログラムを実行するたびに、eth0を置き換えるために必要な値を入力するよう求められます。それは一度置き換えられますが、次回スクリプトを実行するときに、変更可能なファイル内にパターンとしてeth0が存在しないため、動作しません。

sed -iは一度だけ変更を行いますが、私は再帰的にそれを必要とする。..

答えて

0

使用。これにより、DEVICE=の後のanyパターンが$changeに置き換えられます。

+0

ありがとうございましたコードは動作しました – 98521

+0

もう一度-rと-iを一緒に使用できます。私は多くのパラメータを変更しなければならないafieを持っているので、 – 98521

+0

はい、-rと-iを一緒に使うことができます – Munir

0

あなたが複数回を意味する「再帰的」を意味するものではありません。そしてあなたの問題は、あなたが間違ったものにマッチしているということです。

変更したい値と一致しない場合は、に変更してください。

マッチ/^DEVICE=/あなたが気にする行の一部または全体を置き換えてください。

0

file.txtを:

DEVICE=eth0 

これを試してみてください:

$ change=wlan0 
$ sed -r "s/(.*=).*/\1$change/" file.txt 
DEVICE=wlan0 
$ change=eth0 
$ sed -r "s/(.*=).*/\1$change/" file.txt 
DEVICE=eth0 
+0

ありがとうございます。コードは機能しました。 – 98521

+0

@ 98521 - ようこそ。 – Ren

+0

しかし、私は実際の入力ファイルの変更の内容を置き換える必要がある場合。それではどうしたらいいの? – 98521

関連する問題