Mizzi
V2EX  ›  问与答

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

  •  
  •   Mizzi · Dec 26, 2014 · 2921 views
    This topic created in 4200 days ago, the information mentioned may be changed or developed.

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

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

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

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


    @Mizzi 你需要考虑的是 IO 性能
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3847 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 00:10 · PVG 08:10 · LAX 17:10 · JFK 20:10
    ♥ Do have faith in what you're doing.