我的情况如下:
我在myStuffDoSomething
类型中有一堆函数和声明,我想将其重命名为myStuff_DoSomething
,其中DoSomething
可以是任何单词。并且他们中的一些人有可能像这样写出来。
我可以使用s/myStuff[^_]/&_/g
,但这会以myStuffD_oSomething结尾,将下划线放在错误的位置。
注意:我在标签中添加了sed,因为命令替换符的语法与sed类似(如果不相同)。
答案 0 :(得分:4)
如果名称已包含_
,只要前缀始终为myStuff,您就可以使用s/myStuff\zs_\?/_/g
。
这样,现有的_
将不会加倍,但会插入一个不存在的{。}。
编辑:使用\zs
令牌删除评论中Randy Morris指出的重复项。
答案 1 :(得分:2)
这可能对您有用:
echo myStuffDoSomething | sed 's/\(myStuff\)\([^_]\)/\1_\2/'
myStuff_DoSomething
答案 2 :(得分:2)
这就是我要做的事情:
%s/\(myStuff\)_*/\1_