V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Mizzi
V2EX  ›  问与答

有什么好方法批量处理文本中的信息?

  •  
  •   Mizzi · 2014-12-26 21:02:11 +08:00 · 2458 次点击
    这是一个创建于 3626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如批量命名、删除替换其中信息、每行分割成新的文件等等

    17 条回复    2014-12-27 13:55:22 +08:00
    Shared
        1
    Shared  
       2014-12-26 21:09:56 +08:00   ❤️ 1
    我不会向你推荐 awk, sed, grep, find 和 xargs 的
    Mizzi
        2
    Mizzi  
    OP
       2014-12-26 21:41:37 +08:00
    @Shared 想实现每行创建一个新文件,以此行前5位字符命名,有什么方法吗?
    frankzeng
        3
    frankzeng  
       2014-12-26 21:51:36 +08:00 via Android
    python可满足你的要求
    huson
        4
    huson  
       2014-12-26 22:24:38 +08:00
    python +1
    Tink
        5
    Tink  
       2014-12-26 22:34:31 +08:00
    sed
    Tomilay
        6
    Tomilay  
       2014-12-26 22:34:50 +08:00
    Perl
    lululau
        7
    lululau  
       2014-12-26 22:43:48 +08:00
    简单的 sed/awk,复杂的 Perl
    Shared
        8
    Shared  
       2014-12-27 01:46:37 +08:00
    @Mizzi awk '{ system("touch "substr($0, 0, 5)".txt") }' input.txt
    Shared
        9
    Shared  
       2014-12-27 01:56:27 +08:00
    @Mizzi 上面好多人推荐 Python,那来个 Python 一行的:

    [open(line[:5] + ".txt", 'a') for line in open("input.txt", 'r').readlines()]
    wilsonxyz
        10
    wilsonxyz  
       2014-12-27 02:02:43 +08:00
    @Shared 几千万条的数据也可以这样子打开吗?
    Shared
        11
    Shared  
       2014-12-27 02:06:47 +08:00
    @wilsonxyz 请不要讲极端情况,极端情况有别的处理方法
    Shared
        12
    Shared  
       2014-12-27 02:07:33 +08:00
    @wilsonxyz 另外,awk 的方案对行数无要求
    wilsonxyz
        13
    wilsonxyz  
       2014-12-27 02:09:01 +08:00
    @Shared 我不谈极端情况,我只是请教。
    dofine
        14
    dofine  
       2014-12-27 08:54:38 +08:00 via iPhone   ❤️ 1
    awk sed 一般都能满足要求啦
    python 更好写也容易懂一点
    个人感觉
    vivisidea
        15
    vivisidea  
       2014-12-27 09:23:23 +08:00   ❤️ 2
    @Shared 文件对象本身可以迭代的,.readlines()应该是可以去掉的

    @wilsonxyz 千万条数据的情况,我觉得是可以这么处理的,慢慢建就行了阿,首先文件系统里创建千万个文件要能撑住
    Mizzi
        16
    Mizzi  
    OP
       2014-12-27 11:38:41 +08:00   ❤️ 1
    @Shared 学到了,感谢大神,另外向上面说的,如果是无上限的数据也可如此处理不会有问题吗?
    Shared
        17
    Shared  
       2014-12-27 13:55:22 +08:00
    @vivisidea 好的,学到了。


    @Mizzi 你需要考虑的是 IO 性能
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:51 · PVG 20:51 · LAX 04:51 · JFK 07:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.