Vim:その行の他の一致に基づいて置き換え

Vim:その行の他の一致に基づいて置き換え

置き換える必要があるかなり大きなファイルがありますが、その行がすでにパターンとして含まれている場合にのみNX可能です。これまでは、まずwithエントリを検索して手動でこれを実行しました。N1NXNX

/NX

その後、使用

'<,'>s/N1/NX

しかし、これらのファイルは本当に大きくて長いので、この手作業の過程で私が間違える可能性が非常に高いです。 Vimでこれをより効率的に行う方法はありますか?

以下はファイルの一行の例です。

S22Tg    K1B12N1Tg    D1AE22K5    K2B12N1Tg    D1AE22K6    W01B12N1Tg    D1AE22TDNXW01    W02B12N1Tg    D1AE22TDNXW02    W03B12N1Tg

これらの行はすべて非常に似ており、文字の後に表示される数字のみが異なります。

答え1

Vimでは、以下を含む行に置き換えを制限できますNX

:g/NX/s/N1/NX/

代替項目の前に追加すると、/NX/Vimはその項目を含む次の行でのみその項目を実行しますNX(使用範囲)と使用:g一致するすべての行で実行するようにしてくださいNX

答え2

これを行うために、vimでファイルを開く必要はありません。コマンドラインでこれを行い、 sed '/NX/s/N1/NX/g' <filename> >> <newfilename> 名前を<newfilename>元のファイルに変更できます。

関連情報