0

sshで編集したい設定ファイルがあり、その中のテキストを置き換えるためのスマートコマンドが必要です。ファイルは次のようになります。

[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

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

何か案は?

4

3 に答える 3

4
ssh user@host sed -i '/allowed =/s/$/ 10.10.10.9/' /path/to/file
于 2012-04-17T21:27:04.213 に答える
2

これをsed行うと、トリックが実行されます。

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

任意のIPに一致させるには:

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'
于 2012-04-17T21:07:56.593 に答える
2

エディターも使用できます。

 echo -e "/10.10.10.1\ns/\$/ 10.10.10.9\nx\n" | ex file_to_change
于 2012-04-17T21:28:44.830 に答える