4

現在のIPに一致するようにhostsファイルを編集したいのですが、PythonまたはAWKで編集できますが、VIMに方法があるかどうか疑問に思っていました...

私が何を意味するか見てみましょう、私のホストはそのように見えます:

192.168.11.172    blazer blazer.mydomain
192.168.11.173    faster faster.mydomain
...
192.168.11.225    schurtig schurtig.mydomain

ここで、すべてのIPを32ずつインクリメントして、最終結果が次のようになるようにします。

192.168.11.202    blazer blazer.mydomain
192.168.11.203    faster faster.mydomain
...
192.168.11.257    schurtig schurtig.mydomain

カーソルを正しいIPに置いて、次のように入力した場合

30およびCTRL+A

それは私が望むことをします。

唯一の問題は、約300のホストがあります...そして3か月に1回実行する必要があります... Pythonで実行できますが、vimでファイルを表示する方安全です。これは、実行する必要がないためです。スクリプトを作成し、その後結果を制御します。

以下は、最初の行のみを変更します。

let i=172 | g/172/s//\=i+30/

さまざまなIP範囲でこれをループで繰り返して、インクリメントする必要がある回数を指定できるようにしたいのですが、それを行う「トリック」はありますか?

努力してくれてありがとう、オズ

4

3 に答える 3

3

私は確かに(まだ)vimの専門家ではありませんが、これは私がそれを行う方法です([]カーソル位置を示しています)

192.168.11.[1]72    blazer blazer.mydomain
192.168.11.173    faster faster.mydomain
...
192.168.11.225    schurtig schurtig.mydomain

qa(aという名前のマクロを開始する)を押します。変更を加えます(たとえば30 CTRL-A)。カーソルはここにあるはずです:

192.168.11.20[2]    blazer blazer.mydomain
192.168.11.173    faster faster.mydomain
...
192.168.11.225    schurtig schurtig.mydomain

を押しbて単語の先頭に移動します。

192.168.11.[2]02    blazer blazer.mydomain
192.168.11.173    faster faster.mydomain
...
192.168.11.225    schurtig schurtig.mydomain

(または下矢印)を押しjて、変更する次の番号の先頭に移動します。

192.168.11.202    blazer blazer.mydomain
192.168.11.[1]73    faster faster.mydomain
...
192.168.11.225    schurtig schurtig.mydomain

を押しqてマクロ定義を終了します。

53個のIPが残っているので、マクロを53回繰り返す必要があります。53@a

于 2012-06-01T13:24:11.427 に答える
3

これを試して:

:let i=30 | %s/^\(\d*\.\d*\.\d*\.\)\(\d*\)/\=submatch(1).(submatch(2)+i)

\(\d*\.\d*\.\d*\.\)(によって取得されたsubmatch(1))はIPの最初の3つの番号と一致し、ドット(eg 192.168.11.)と\(\d*\)(によって取得されたsubmatch(2))はIPの最後の番号と一致します。

私はこれがそれを制御するためのより良い方法だと思います:

:let i=30 | %s/^\(\d*\.\d*\.\d*\.\)\(\d*\)/\=submatch(1).(submatch(2)+i)/gc
于 2012-06-01T13:40:32.530 に答える
3

次の置換コマンドを使用できます。

:%s/\(\d\+\.\)\{3}\zs\d\+/\=submatch(0)+30/g
于 2012-06-02T02:40:14.750 に答える