呃,真不知道是我推广有误,还是别的原因。至今组里还是我一个人用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~~~~~

哈哈,就这样啦~

版权所有,转载请注明出处.http://www.vimer.cn

Vim(gVim)对排序的妙用

前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。 原文的问题如下: ...

阅读全文

vim(gVim)统计字节、字符数

前段时间在做文件扫描的时候,有一些关于字节、字符数统计的需求,考虑到有同学也可能用的到,所以整理一下记录在这里。 1.统计当前字符之前的所有字节数 ...

阅读全文

糗事百科网站改版,对应qiushibaike.vim插件升级

前不久糗百改版,所以原有的qiushibaike.vim插件用起来会有一些问题,今天有时间就修改了一下. 如图: 下载地址: http://www.vim.org/scripts/script.php?scr...

阅读全文

33则回应给“操作大文本,awk vs vim”

  1. 无限说道:

    有一个东西 叫 sed

    [回复]

    Dante 回复:

    呃,说实话,我的确从来没有用过sed,刚查了一下:
    $ sed ’2d’ example—–删除example文件的第二行。

    $ sed ’2,$d’ example—–删除example文件的第二行到末尾所有行。

    $ sed ‘$d’ example—–删除example文件的最后一行。

    $ sed ‘/test/’d example—–删除example文件所有包含test的行。

    只是不知道效率怎么样?

    [回复]

    依云 回复:

    最近才会的——
    sed -n -i ’1759668,$p’ uin_newopenid_0

    [回复]

  2. 依云说道:

    sed, awk 都是好东西,就是我都不太会用。
    如果是大量数据的处理,千万别用 Vim。Vim 是文本编辑器,不是文本处理器。

    sed 效率至少比 Vim 高很多。我用 sed 处理 10000+ 个网页(比较小的),正则替换,结果不用一分钟就搞定了,如果磁盘 I/O 够快的话应该能更快。

    [回复]

    Dante 回复:

    哈哈,是啊,看来还是太依赖于vim啦~~
    不过有时候用vim做正则替换做多了,就忍不住……
    ps:我最近连有些代码都用vim来自动生成,额,太懒了……

    [回复]

  3. GuoJing说道:

    嘿,同学,做个链接行不?同样的vimer,到我网站去看一下,虽然我们做的可能不太相同。。

    觉得好的话知会一声,我再过来看哈。。

    [回复]

    Dante 回复:

    呵呵,已经加上啦。你的博客很炫啊~~

    [回复]

    GuoJing 回复:

    好,我这就做上

    [回复]

  4. Easwy说道:

    呵,刚在我的论坛上有人留了你的网址,特地跑过来看一下
    看来我俩的推广都很失败,目前公司里也只有我一个人用vim,sigh~~~

    这个问题貌似也可以用tail解决。

    其实vim的ex命令(即命令行命令),和sed的命令是一样的

    [回复]

    Dante 回复:

    哈哈,推广vim任重道远啊,tail也可以?!看样子我对linux的命令还不是很熟悉啊~~

    [回复]

  5. Easwy说道:

    看到楼上在交换链接,我们也可以交换一下,呵呵

    [回复]

    alexandercer 回复:

    居然是easwy 大大的留言啊…不小心遇到了…

    [回复]

    吴叔 回复:

    几个大神都来了..刚准备把这个博客看完看您的那个系列教程..

    [回复]

    Dante 回复:

    好的啊~~不知道该加您哪个链接呢?我看你是一个博客一个论坛呢~~

    [回复]

    Easwy 回复:

    添加博客的链接吧:
    http://easwy.com/blog/

    我已经加上了你的

    [回复]

    Dante 回复:

    链接已加~~~ 多多交流~~~哈哈

    [回复]

  6. hehebushiwo说道:

    估计vim学习周期太长了,有些功能不是很直接。对打字速度也有所要求。

    [回复]

    Dante 回复:

    呵呵,是啊,没有投入就没有产出,还真是放之四海而皆准的哲理啊

    [回复]

    jungle 回复:

    学习周期还不是很长吧,改变一下习惯,很快的,至于打字速度,对程序员来说应该不是啥问题吧

    [回复]

    Dante 回复:

    哈哈,一旦上手,理解了vim的设计思想,就会很快~~

    [回复]

    jungle 回复:

    确实,习惯了vim的操作方式,真的对windows下面的编辑器没有啥想法了,都一个样
    vim可以做到指哪打哪,而且还支持扩展功能,要是自己想要什么新功能,用脚本语言写就可以了,还支持python,不知道开放的接口到什么程度了

    [回复]

    Dante 回复:

    对python的使用没有任何限制~~ python2.x和python3都支持~~ 哈哈,最喜欢的编辑器+最喜欢的语言~~

    [回复]

    jungle 回复:

    呵呵 最近才开始接触这两东西,目前的程度也就是堪堪看完帮助文件。python写代码确实感觉还不错,也不需要编译链接的过程~ 后续要怎么深入学习我还真有点迷茫啊

    [回复]

    jungle 回复:

    跟c相比,python多了对象支持和异常处理机制,确实很方便,不过习惯了c的思维方式,在用python的时候不知道怎么用面向对象了

    [回复]

  7. jackaldire说道:

    sed awk叫做流编辑器,专门处理大型数据流
    用普通文本编辑器编辑大文件就是噩梦。前一段时间我用vim编辑一个160M的XML,打开以后定位到文件末尾需要5分钟,后来还是搭了一个MSYS用sed搞定。

    [回复]

    Dante 回复:

    哈哈,太依赖vim啦,不过用到sed 和 awk的机会不多……所以就没怎么学~

    [回复]

  8. Redleaves说道:

    150W行有这么慢么?
    我用我自己写的编辑器,操作1000W行的文本,也就是零点几秒的事.文件有好几百MB
    试了一下VIM,感觉也不慢.估计是楼主的内存太小…

    [回复]

    Dante 回复:

    2G的内存……应该够了呀……,自此操作大文本都是用awk了……

    [回复]

    宇文高下 回复:

    300多万行,大概也就200m左右的文件,vim 普通模式下 依次输入 50 % dgg 删除前一半,不到3秒

    [回复]

  9. laruence说道:

    sed才是最适合这个需求的….

    [回复]

  10. 小新说道:

    sed是vim的命令行版,这里很适合用sed。
    在合适的场景里面用合适的工具确实会事半功倍!

    [回复]

  11. bugtrace说道:

    博主的机器多大内存,我的ubuntu挂16G,经常用vim打开上百m的文本文件,丝毫没有卡的感觉。
    3060484行的txt,vim载入+自动转码也就7s左右,很爽阿。

    [回复]

    Dante 回复:

    额。。开发机只有2G。。。

    [回复]

发表评论