c0mmand
V2EX  ›  问与答

有个 23GB 的 TXT,想搜索里面某特定字符,有什么快速办法?

  •  
  •   c0mmand · Dec 7, 2015 · 4236 views
    This topic created in 3841 days ago, the information mentioned may be changed or developed.
    有个 23GB 的 TXT ,想搜索里面某特定字符,有什么快速办法?
    30 replies    2015-12-09 00:28:25 +08:00
    pupboss
        1
    pupboss  
       Dec 7, 2015   ❤️ 1
    全部放到内存
    lsmgeb89
        2
    lsmgeb89  
       Dec 7, 2015   ❤️ 1
    grep 下?感觉有 UI 的编辑器 hold 不住哈
    lshero
        3
    lshero  
       Dec 7, 2015   ❤️ 1
    如果是一行一行的日志的话 切割成多份 一份一份的找
    tracyone
        4
    tracyone  
       Dec 7, 2015 via Android   ❤️ 1
    grep ack ag perl …
    hahasong
        5
    hahasong  
       Dec 7, 2015   ❤️ 1
    用 java 一行一行的读,写个循环
    kokutou
        6
    kokutou  
       Dec 7, 2015   ❤️ 1
    winhex ...
    c0mmand
        7
    c0mmand  
    OP
       Dec 7, 2015
    @pupboss 没这么大内存的机器
    @lsmgeb89 正准备这么做,找到这行数据后,有没有办法把这行数据的前后几百行一共拷贝出来呢?
    @lshero 办法可行,有点麻烦。
    @tracyone Linux 小白,参数具体意义?
    @hahasong 不会 Java 。
    Slienc7
        8
    Slienc7  
       Dec 7, 2015   ❤️ 1
    随便什么语言 ReadLine
    tracyone
        9
    tracyone  
       Dec 7, 2015 via Android   ❤️ 1
    @wuxiao2522 前三个是命令行程序,后面一个是脚本语言,都是用于文本查找的,特点和快慢有所不同,自己搜索下关键字和正则表达式
    bk201
        10
    bk201  
       Dec 7, 2015   ❤️ 1
    readline 只适合有换行符的吧,而且换行符的哪一行还得小。
    按字节读取或者分割。
    c0mmand
        11
    c0mmand  
    OP
       Dec 7, 2015
    @kokutou 感谢,已经 winhex 搞定。
    @tracyone 谢谢,已经解决了。
    kxjhlele
        12
    kxjhlele  
       Dec 7, 2015
    sep 也可以把,
    skydiver
        13
    skydiver  
       Dec 7, 2015
    前后两百行: grep -C 200 <strtofind> <filename>
    dzxx36gyy
        14
    dzxx36gyy  
       Dec 7, 2015 via Android
    曾经我也纠结过怎么打开 23g 的某社工库 txt ……
    abelyao
        15
    abelyao  
       Dec 7, 2015 via iPhone
    @dzxx36gyy 哪个库啊?
    ryd994
        16
    ryd994  
       Dec 7, 2015 via Android
    read(n)不就好了么?
    多少 G 都行啊
    dzxx36gyy
        17
    dzxx36gyy  
       Dec 7, 2015 via Android
    @abelyao soyun
    lululau
        18
    lululau  
       Dec 7, 2015
    如果你能估计要检索出的结果在文件中的偏移量,或者文件是有序的,可以用二分查找之类的:

    # 显示一个文件中从第 50G 个字节开始的长度为 1K 字节的内容
    offset=$((50*1024*1024*1024-1))
    length=1024
    dd if=file_name bs=1 skip="$offset" count="$length" | grep regex

    如果不是这个情况,那就搞不懂这个问题到底是啥意思了
    xujif
        19
    xujif  
       Dec 7, 2015
    grep --help 就可以满足了
    ixiaozhi
        20
    ixiaozhi  
       Dec 7, 2015
    23GB 的社工库么。。。
    c0mmand
        21
    c0mmand  
    OP
       Dec 7, 2015
    @ixiaozhi 类似吧,是一本字典。
    qinxi
        22
    qinxi  
       Dec 7, 2015
    如果只搜一次 那就随便 readline 如果想重复搜索 你用类似 lucene 的工具吧 不过嘛 索引会很大很大..哈哈哈哈
    jasontse
        23
    jasontse  
       Dec 7, 2015 via iPad
    squid157
        24
    squid157  
       Dec 7, 2015
    读文件才是最慢的吧

    想想弄到数据库里面然后对有意义的字段加个索引多好
    fxxkgw
        25
    fxxkgw  
       Dec 7, 2015
    grep 最快 也可以用 es
    leavic
        26
    leavic  
       Dec 7, 2015
    你该问问写这个 txt 文件的人
    matrix67
        27
    matrix67  
       Dec 7, 2015 via Android
    ag 啊
    46fo
        28
    46fo  
       Dec 7, 2015
    UE
    omen
        29
    omen  
       Dec 8, 2015
    用 everedit 打开就可以搜索
    webjin
        30
    webjin  
       Dec 9, 2015
    @wuxiao2522 你好,怎么搞定的,有操作教程吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1085 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 18:28 · PVG 02:28 · LAX 11:28 · JFK 14:28
    ♥ Do have faith in what you're doing.