我有一个文件,其行如下:
ram_reg_10/raja_reg_9/raghu_reg_8
abc_reg_4/bcd_reg_5
cad/pqr_reg_91
我想在 vi 编辑器中的每行最后将字符串“_reg_number”转换为 [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]/
这里我们用来\+
匹配末尾的一组或多组数字。所以我们没有像这样的行替代cad/pqr_reg_
。
答案2
只需使用这个:
:%s/_reg_\([0-9]*\)$/[\1]/
也就是说,用 捕获数字\(
,\)
然后用 打印回来\1
。另请注意,没有必要/g
,因为每行只需执行一次。