我在vi-editor中打开了一个包含9列的文本,我想用逗号替换第9列(最后一列)中的制表符,后跟空格。到目前为止,我想出了这个;
'2,$s#\(^.\{8\}\)\\t#\1\(\,\)#'
但是这似乎与任何东西都没有匹配......可能是我逃避了太多东西,但我也不知道你是否需要指定列分隔符(在这种情况下也是一个标签)。 对此的任何帮助将不胜感激。
答案 0 :(得分:1)
%s/^\(\%(\t\?[^\t]\+\)\{8\}\)\t\(.*\)$/\1, \2/
这取代了(s
):
^
- 行的开头\(
(第1组)的开头
\%(
内部小组的开始
\t?
0或更多 Tab s(以说明在行首时缺少 Tab )[^\t]\+
后面跟着1个非 Tab \)
内部小组结束\{8\}
上述内部群体重复了8次\)
(第1组) \t
后跟 Tab \(.*\)
以及其他(第2组) $
直到行尾使用:
\1
- (第1组)(一直到第8天标签),
- 逗号和空格\2
- (第2组)(从第8个标签到行尾的所有内容)在整个缓冲区(%
)。
答案 1 :(得分:0)
如果这是一次性替换,您可以使用宏(从您希望更改的第一行的第一个字符开始):
q q ˚F 标签 7 ; C 升 , 空间 ESC Ĵ < KBD> 0 q
按键如下:
然后使用 @ q 播放下一行(或 9 9 @ q 播放下一行99行等。)