呃,真不知道是我推广有误,还是别的原因。至今组里还是我一个人用vim做开发环境,大家倒是对vim的正则表达式更感兴趣,当然,实际上是,对让我帮忙操作更感兴趣…… 今天小组有一次大的对外数据迁移,同事有个需求,要在一个300多万行的文本文件中,将前150多万删掉…… 于是,我打开vim,到150多万行,然后dgg。 结果,可想而知……死机…… 同事转而求其他,用awk命令…… 脚本如下:
awk 'NR>1759668 {print $1" "$2}' uin_newopenid_0 >uin_newopenid_0_haha
上面命令的意思就是,将大于1759668行的号码,从 uin_newopenid_0 中写入到 uin_newopenid_0_haha,相当于间接实现了删除操作。 整个过程不到5秒…… 唉,果然用正确的工具做正确的事情才是王道啊。 不过我还是强烈推荐大家用vim做代码编辑器,IDE~~~~~ 哈哈,就这样啦~ 版权所有,转载请注明出处.https://www.vimer.cn
无限 on #
有一个东西 叫 sed
Reply
Dante on #
呃,说实话,我的确从来没有用过sed,刚查了一下:
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。
只是不知道效率怎么样?
Reply
依云 on #
最近才会的——
sed -n -i '1759668,$p' uin_newopenid_0
Reply
依云 on #
sed, awk 都是好东西,就是我都不太会用。
如果是大量数据的处理,千万别用 Vim。Vim 是文本编辑器,不是文本处理器。
sed 效率至少比 Vim 高很多。我用 sed 处理 10000+ 个网页(比较小的),正则替换,结果不用一分钟就搞定了,如果磁盘 I/O 够快的话应该能更快。
Reply
Dante on #
哈哈,是啊,看来还是太依赖于vim啦~~
不过有时候用vim做正则替换做多了,就忍不住……
ps:我最近连有些代码都用vim来自动生成,额,太懒了……
Reply
GuoJing on #
嘿,同学,做个链接行不?同样的vimer,到我网站去看一下,虽然我们做的可能不太相同。。
觉得好的话知会一声,我再过来看哈。。
Reply
Dante on #
呵呵,已经加上啦。你的博客很炫啊~~
Reply
GuoJing on #
好,我这就做上
Reply
Easwy on #
呵,刚在我的论坛上有人留了你的网址,特地跑过来看一下
看来我俩的推广都很失败,目前公司里也只有我一个人用vim,sigh~~~
这个问题貌似也可以用tail解决。
其实vim的ex命令(即命令行命令),和sed的命令是一样的
Reply
Dante on #
哈哈,推广vim任重道远啊,tail也可以?!看样子我对linux的命令还不是很熟悉啊~~
Reply
Easwy on #
看到楼上在交换链接,我们也可以交换一下,呵呵
Reply
alexandercer on #
居然是easwy 大大的留言啊...不小心遇到了...
Reply
吴叔 on #
几个大神都来了..刚准备把这个博客看完看您的那个系列教程..
Reply
Dante on #
好的啊~~不知道该加您哪个链接呢?我看你是一个博客一个论坛呢~~
Reply
Easwy on #
添加博客的链接吧:
http://easwy.com/blog/
我已经加上了你的
Reply
Dante on #
链接已加~~~ 多多交流~~~哈哈
Reply
hehebushiwo on #
估计vim学习周期太长了,有些功能不是很直接。对打字速度也有所要求。
Reply
Dante on #
呵呵,是啊,没有投入就没有产出,还真是放之四海而皆准的哲理啊
Reply
jungle on #
学习周期还不是很长吧,改变一下习惯,很快的,至于打字速度,对程序员来说应该不是啥问题吧
Reply
Dante on #
哈哈,一旦上手,理解了vim的设计思想,就会很快~~
Reply
jungle on #
确实,习惯了vim的操作方式,真的对windows下面的编辑器没有啥想法了,都一个样
vim可以做到指哪打哪,而且还支持扩展功能,要是自己想要什么新功能,用脚本语言写就可以了,还支持python,不知道开放的接口到什么程度了
Reply
Dante on #
对python的使用没有任何限制~~ python2.x和python3都支持~~ 哈哈,最喜欢的编辑器+最喜欢的语言~~
Reply
jungle on #
呵呵 最近才开始接触这两东西,目前的程度也就是堪堪看完帮助文件。python写代码确实感觉还不错,也不需要编译链接的过程~ 后续要怎么深入学习我还真有点迷茫啊
Reply
jungle on #
跟c相比,python多了对象支持和异常处理机制,确实很方便,不过习惯了c的思维方式,在用python的时候不知道怎么用面向对象了
Reply
jackaldire on #
sed awk叫做流编辑器,专门处理大型数据流
用普通文本编辑器编辑大文件就是噩梦。前一段时间我用vim编辑一个160M的XML,打开以后定位到文件末尾需要5分钟,后来还是搭了一个MSYS用sed搞定。
Reply
Dante on #
哈哈,太依赖vim啦,不过用到sed 和 awk的机会不多……所以就没怎么学~
Reply
Redleaves on #
150W行有这么慢么?
我用我自己写的编辑器,操作1000W行的文本,也就是零点几秒的事.文件有好几百MB
试了一下VIM,感觉也不慢.估计是楼主的内存太小...
Reply
Dante on #
2G的内存……应该够了呀……,自此操作大文本都是用awk了……
Reply
宇文高下 on #
300多万行,大概也就200m左右的文件,vim 普通模式下 依次输入 50 % dgg 删除前一半,不到3秒
Reply
laruence on #
sed才是最适合这个需求的....
Reply
小新 on #
sed是vim的命令行版,这里很适合用sed。
在合适的场景里面用合适的工具确实会事半功倍!
Reply
bugtrace on #
博主的机器多大内存,我的ubuntu挂16G,经常用vim打开上百m的文本文件,丝毫没有卡的感觉。
3060484行的txt,vim载入+自动转码也就7s左右,很爽阿。
Reply
Dante on #
额。。开发机只有2G。。。
Reply