viで正規表現を検索して置き換えますか?

viで正規表現を検索して置き換えますか?

正規表現を使用して、文字列を複数行に現れる文字「x」に置き換えたいと思います。

問題は、たとえば、次を含むファイルでxを単語の後に整数が続くxに置き換えることです。

x44name
xjanname
x50name

たとえば、

:1,2s/x[0-9]name/num/g

単語を検索して置換するには、sedまたは他のコマンドを使用する必要がありますか?

次のエラーが発生します。

E486: Pattern not found: x[0-9]name

答え1

0 を含め、必要な数の数字を持つことができる場合は、次の操作を行う必要があります。

:%s/x[0-9]*name/num/g

いつも二人なら

:%s/x[0-9][0-9]name/num/g

もちろん、[0-9]の代わりに\ dを使用することもできます。

:%s/x\d*name/num/g
  • %s完全なファイル検索を示します。
  • s現在行のみが検索されることを示します。

  • g与えられた行のすべての一致エントリを表します。

  • gがない場合は、各行の最初の項目のみを置き換えることを意味します。

答え2

私が正しく理解した場合、 "num"は "x"の後の数字です。次の点をご理解ください。

:%s/x\([0-9]\)/\1/g

関連情報