背景
最近需要对一些CSV文件进行倒序的操作, CSV前三行是 注释,后面是数据, 需要把数据进行全倒序(第一行与最后一行互换,第二行与倒二行互换...etc)。
由于有400多个CSV,每个CSV内都有几千条数据。人工来搞是不明智的。
解决
经过在网上查找,可以用VIM实现。且只需要两步:
1.打开VIM 输入 :args D:\CSV\**\*.csv (D:\CSV下的所有CSV及子目录下的CSV作为参数)
2.输入 :argdo g/^/m3 | w! (argdo 为每一个上面指定的args执行命令, g/^/m3 对第三行以下数据执行倒序 g(lobal)命令对全局操作 ^匹配每行行首,m3 m(ove)3把每行都移到第3行下面 | 用来分隔两个不同命令, w!强制将结果写入
然后等待完成 (如果在第2步之前设置set nomore可以避免“按回车继续”,自动输出结果直至完成)
![]()
最近需要对一些CSV文件进行倒序的操作, CSV前三行是 注释,后面是数据, 需要把数据进行全倒序(第一行与最后一行互换,第二行与倒二行互换...etc)。
由于有400多个CSV,每个CSV内都有几千条数据。人工来搞是不明智的。
解决
经过在网上查找,可以用VIM实现。且只需要两步:
1.打开VIM 输入 :args D:\CSV\**\*.csv (D:\CSV下的所有CSV及子目录下的CSV作为参数)
2.输入 :argdo g/^/m3 | w! (argdo 为每一个上面指定的args执行命令, g/^/m3 对第三行以下数据执行倒序 g(lobal)命令对全局操作 ^匹配每行行首,m3 m(ove)3把每行都移到第3行下面 | 用来分隔两个不同命令, w!强制将结果写入
然后等待完成 (如果在第2步之前设置set nomore可以避免“按回车继续”,自动输出结果直至完成)