我有一份文件,其行文如下:
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
怎么做?
发布于 2014-07-28 12:26:48
在指挥模式下:
:%s/_reg_\([0-9]\+\)$/[\1]/
在这里,我们使用\+
在末尾匹配一个或多个数字组。所以我们不能用像cad/pqr_reg_
这样的线来代替。
发布于 2014-07-28 12:09:03
就用这个吧:
:%s/_reg_\([0-9]*\)$/[\1]/
也就是说,用\(
和\)
捕捉数字,然后用\1
将其打印回来。注意,也没有必要使用/g
,因为每一行只执行一次。
https://unix.stackexchange.com/questions/146974
复制相似问题