最后更新于 .

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

Pingbacks

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. 无限

    无限 on #

    有一个东西 叫 sed

    Reply

    1. Dante

      Dante on #

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

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

      $ sed '$d' example-----删除example文件的最后一行。

      $ sed '/test/'d example-----删除example文件所有包含test的行。

      只是不知道效率怎么样?

      Reply

      1. 依云

        依云 on #

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

        Reply

  2. 依云

    依云 on #

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

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  3. GuoJing

    GuoJing on #

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

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

    Reply

    1. Dante

      Dante on #

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

      Reply

      1. GuoJing

        GuoJing on #

        好,我这就做上

        Reply

  4. Easwy

    Easwy on #

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

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

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  5. Easwy

    Easwy on #

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

    Reply

    1. alexandercer

      alexandercer on #

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

      Reply

      1. 吴叔

        吴叔 on #

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

        Reply

    2. Dante

      Dante on #

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

      Reply

      1. Easwy

        Easwy on #

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

        我已经加上了你的

        Reply

        1. Dante

          Dante on #

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

          Reply

  6. hehebushiwo

    hehebushiwo on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

    2. jungle

      jungle on #

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

      Reply

      1. Dante

        Dante on #

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

        Reply

        1. jungle

          jungle on #

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

          Reply

          1. Dante

            Dante on #

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

            Reply

            1. jungle

              jungle on #

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

              Reply

            2. jungle

              jungle on #

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

              Reply

  7. jackaldire

    jackaldire on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

  8. Redleaves

    Redleaves on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

      1. 宇文高下

        宇文高下 on #

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

        Reply

  9. laruence

    laruence on #

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

    Reply

  10. 小新

    小新 on #

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

    Reply

  11. bugtrace

    bugtrace on #

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

    Reply

    1. Dante

      Dante on #

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

      Reply

发表评论