2012-04-17 8 views
0

私は設定ファイルを持っていますが、sshで編集したいのですが、スマートコマンド(またはコマンド)が必要です。ファイルは次のようである:bashのテキストを置き換えてください

[vol1] 
path = /folder 
allowed = 10.10.10.1 
public=yes 

私はこのように、正確にいくつかのIPの空白区切りを追加するには、許可の部分を変更する必要がありますをしようとしました

[vol1] 
path = /folder 
allowed = 10.10.10.1 10.10.10.9 
public=yes 

bashの機能をsedのが、私はできませんそれは私がそれがケーキの一片だと思ったのと同じように、私が欲しいのと同じように働かせてください。 ちょっと別の情報ですが、このようなテキストのチャンクがconfigファイルにたくさんあります。 IPアドレスはsamプールからのものではなく、派生したもの(非常に異なっている可能性があります)とIPアドレス形式はすでにチェックされているため、その必要はありません。 私が持っている情報は、ちょうどそのチャンクの許可されたセクションで、[vol1]で始まるチャンクで与えられたアドレスを追加しなければならないということです。 私は十分にはっきりと聞こえることを願っています。

アイデア?任意のIP一致させるには

cat /path/to/file.txt | sed 's/10.10.10.1/& &/g' 

+2

'sed'は、このための適切なツールです。何を試しましたか? – harpo

+0

追加しているIPアドレスについてスクリプトがどのくらいスマートになる必要がありますか?それが元のIPアドレスの何らかの変換であれば、 'sed'よりも適切かもしれないPerl/Python /の単純なスクリプトです。 –

+1

これを一度だけ実行する必要がある場合は、テキストエディタを試してみてください。繰り返し実行する必要がある場合は、テンプレートからファイルを生成するほうが適切な場合があります。 – Kaz

答えて

2

sedでこれを行うと、トリックを行う必要があり、あなたの区切り文字を変更したい場合は

cat /path/to/file.txt | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/& &/g' 

を、ちょうどsedコマンドの右オペランドを編集し、どんな区切り文字を置いてもかまいません。例では、タブを使用するには:

cat /path/to/file.txt | sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/&\t&/g' 
+2

http://partmaps.org/era/unix/award.html –

+1

ええ、あなたは最後にファイル名を置くことができますこのように左から右へ –

+0

@downvoter:あなたが説明することができればそれは問題になるだろう。 –

4
ssh [email protected] sed -i '/allowed =/s/$/ 10.10.10.9/' /path/to/file 
+0

このソリューションは私の最初の質問でうまく動作しますが、私が必要なものについてはっきりしていませんでした。私の質問をもう一度見直してください。 – trivunm

2

あなたもエディタを使用することができます。

echo -e "/10.10.10.1\ns/\$/ 10.10.10.9\nx\n" | ex file_to_change 
関連する問題