
次の行を含むファイルがあります。
ram_reg_10/raja_reg_9/raghu_reg_8
abc_reg_4/bcd_reg_5
cad/pqr_reg_91
viエディタで、各行の末尾にある文字列 "_reg_number"を[番号]に変換したいと思います。
出力は次のようになります。
ram_reg_10/raja_reg_9/raghu[8]
abc_reg_4/bcd[5]
cad/pqr[91]
私は試した:
:%s?_reg_[0-9]$?\[[0-9]\]?g
しかしそれは以下を提供します:
ram_reg_10/raja_reg_9/raghu[[0-9]]
abc_reg_4/bcd[[0-9]]
cad/pqr_reg_91
どうすればいいですか?
答え1
コマンドモードで:
:%s/_reg_\([0-9]\+\)$/[\1]/
\+
ここでは、最後に1つ以上の数値グループを一致させるために使用します。したがって、このような行置換はありませんcad/pqr_reg_
。
答え2
これを使用してください:
:%s/_reg_\([0-9]*\)$/[\1]/
つまり、で数字をキャプチャ\(
して\)
から、再印刷します\1
。また、これは/g
行ごとに一度だけ行う必要があるため、必要ありません。