次の形式の複数行を含む大きなファイルがあります。
USet07-1
USet07-2
USet08-1
USet08-2
.
.
.
USet22-2
.
.
.
-
.NETのこれらの文字列からハイフン/ダッシュを削除したいと思いますvim
。以下を使用して文字列を検索します。
:/USet\d\d-\d
しかし、これを次に変えようとすると
:%s/Uset\d\d-\d/USet\d\d\d
はっきり理解しています
USetddd
すべての場合に。しかし、私が望むものは:
USet071
USet072
USet081
USet082
.
.
.
USet222
.
.
.
これはどのように達成できますか?一致文字列の一部を再利用して置換に使用できますか?
ベストアンサー1
はい、可能です。キャプチャグループ。デフォルトでは、パターンのさまざまな部分を次にラップし、\(...\)
置換部分の次の部分を参照します\1
。
:%s/Uset\(\d\d\)-\(\d\)/USet\1\2
欲しいから削除するパターンの単一部分として、\zs
(一致の開始)と\ze
(一致の終了)を介して実際の一致を制限するより短いオプションがあります(まだ周囲の項目もあると主張しています)。
:%s/Uset\d\d\zs-\ze\d//
これは非常に基本的なものであり、キャプチャグループはsed
多くの正規表現ベースのツールで一般的です(たとえば、コマンドを見つけて組み込みをナビゲートする方法を学びます。包括的で多くの:help
ヒントを提供します。学習に専念すれば、Vimは非常に強力で効率的なエディタであることが証明されます。