5 regex csv vim replace copy-paste
我有大量的csv文件,如下所示:
xxxxxxxx
xxxxx
货件,YD564n
xxxxxxxxx
xxxxx
1,RR1760
2,HI3503
3,HI4084
4,HI1824
我需要让它们看起来如下:
xxxxxxxx
xxxxx
货件,YD564n
xxxxxxxxx
xxxxx
YD564n,1,RR1760
YD564n,2,HI3503
YD564n,3,HI4084
YD564n,4,HI1824
YD564n是一个货件编号,每个csv文件都有所不同.但它总是在"装运"之后出现.
我可以使用哪些vim命令?
您可以使用宏来完成此操作,并将其应用于多个文件。
这是一个例子。按原样键入以下内容:
3gg$"ayiw:6,$s/^/<C-R>a/<CR>:w<CR>:bn<CR>
Run Code Online (Sandbox Code Playgroud)
现在看起来很可怕。让我看看是否可以更好地解释一下。
3gg$
: 转到第三行末尾。
"ayiw
:将最后一个字复制到寄存器中a
。
:6,$s/^/<C-R>a/<CR>
:在从第 6 行开始的每一行中,替换寄存器 a 中的开头内容。
:w<CR>:bn<CR>
:保存并进入下一个缓冲区。
现在您可以将其映射到一个键,方法是
:nnoremap <C-A> 3gg$"ayiw:6,$s/^/<C-R>a/<CR>:w<CR>:bn<CR>
Run Code Online (Sandbox Code Playgroud)
然后,如果你有 200 个 csv 文件,你可以将 vim 打开为
vim *.csv
Run Code Online (Sandbox Code Playgroud)
进而
200<C-A>
Run Code Online (Sandbox Code Playgroud)
你在那里输入 Ctrl-A ,一切都应该完成。
也就是说,我肯定会更舒服地使用适当的脚本语言来完成此操作,它会更直接。