2017-01-31 10 views
3

私の元のファイルとファイルを変更しようとしているとき:エラー 'sedは-i'

私はそれを変更したい
nameserver 123.23.23.12 
nameserver 10.0.1.13 

nameserver 10.0.0.1 
nameserver 10.0.1.13 

コマンド私が使用しています:

sed -i 's/nameserver*/nameserver 10.0.0.1/g' resolve.conf 

エラー:

また、

、私は出力をテストするために、以下の使用:

sed 's/nameserver*/nameserver 10.0.0.1/g' resolve.conf 

私が手:2番目のシナリオで

nameserver 10.0.0.1 123.23.23.12 

を、それが完全なラインを交換するが、ちょうど私置き換えるテキストを追加さ​​れていません。

私が間違っていることは何ですか?

ありがとうございます!ちょうどnameserverの0回以上の繰り返しが続く

答えて

2
sed 's/nameserver*/nameserver 10.0.0.1/g' resolve.conf 

マッチ - 本質的に、ちょうどnameserver

あなたは、nameserver後、すべてを置き換える、このパターンを使用する場合:

sed 's/nameserver.*/nameserver 10.0.0.1/g' resolve.conf 

をしかし、それは、あなたはresolv.confの行の両方を置き換えることになります。なぜIPアドレス部分を置き換えないのですか?

最初のオカレンスだけを交換するには、あなたがこの記事従うことができます:それは、バックアップファイルの作成をバイパスするよう-iオプションに長さゼロのオプションを渡し、sed -iで問題を解決するためにHow to use sed to replace only the first occurrence in a file?

を:

sed -i '' ... 
+0

こんにちは、IPアドレス部分は動的です。それは何でもよい – Dadu

+0

試した:sed -i '' s/nameserver。*/nameserver 10.0.0.1/g 'resolve.conf。まだ同じエラーが発生しています。 sed:-iをstdinと一緒に使用することはできません – Dadu

+0

'-i'の後ろに' sed -i '''を空白で置きます。私はMac OSとUbuntu上でそのスペースを使わずに試してみました。あなたはどんなOSですか? – codeforester

関連する問題