询问: Linux 下大文件内容查找 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
ceshi123
V2EX    Linux

询问: Linux 下大文件内容查找

  •  
  •   ceshi123 2017-05-08 16:39:06 +08:00 12870 次点击
    这是一个创建于 3158 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问一下各位大神,现在有个日志文件的大小为 2.5 个 g,在 linux 下有什么命令可以打开这个文件,并且在里面搜索特定的内容吗,比如我要在这个日志中搜索订单号,效率高点的命令

    40 条回复    2021-01-08 14:43:09 +08:00
    lululau
        1
    lululau  
       2017-05-08 16:42:01 +08:00
    lnav 不过你可能需要自定义 formatter
    holyghost
        2
    holyghost  
       2017-05-08 16:42:25 +08:00
    。。。。。。。。。。。。。。。。。。

    grep
    rootit
        3
    rootit  
       2017-05-08 16:59:23 +08:00
    linux 三剑客 awk sed grep
    ceshi123
        4
    ceshi123  
    OP
       2017-05-08 17:05:01 +08:00
    现在主要担心的是,用命令打开整个文件,根本打不开,肯定不能一次性全部读入内存吧,是不是存在某个命令,可以设定缓冲区
    begeekmyfriend
        5
    begeekmyfriend  
       2017-05-08 17:08:35 +08:00
    open/lseek/read == open/pread
    ldbC5uTBj11yaeh5
        6
    ldbC5uTBj11yaeh5  
       2017-05-08 17:12:10 +08:00
    大兄弟这发帖吞吞吐吐,大家只能高来高去的回你。估计你这求助要吃瘪了。。。
    byfar
        7
    byfar  
       2017-05-08 17:16:44 +08:00
    之前看到有个 V 友用 vim 打开了 1.5G 的日志文件,用了 17 秒,没记错的话,不过不知道能不能进行查询等相关操作
    bsidb
        8
    bsidb  
       2017-05-08 17:21:25 +08:00 via Android
    @ceshi123 grep 等命令是一行一行读入的,慢是慢点,但不用担心内存爆掉。
    Lycnir
        9
    Lycnir  
       2017-05-08 17:31:16 +08:00
    awk 处理快
    syahd
        10
    syahd  
       2017-05-08 17:31:34 +08:00 via Android
    less,more,grep,sed.如果是看得话,就用 less 就够了
    htfy96
        11
    htfy96  
       2017-05-08 17:39:20 +08:00   1
    不要太担心 grep 这些上古工具的内存占用
    yuedingwangji
        12
    yuedingwangji  
       2017-05-08 17:54:04 +08:00
    才 2,5G 三剑客随便挑
    ryd994
        13
    ryd994  
       2017-05-08 17:55:23 +08:00 via Android   2
    “现在主要担心的是,用命令打开整个文件,根本打不开”
    没有恶意,楼主你是 PHP 程序员么?
    rrfeng
        14
    rrfeng  
       2017-05-08 17:59:08 +08:00
    less 会吃内存,不要用。
    fxxkgw
        15
    fxxkgw  
       2017-05-08 18:39:36 +08:00
    我怀疑你是培训班出来的
    tkisme
        16
    tkisme  
       2017-05-08 19:40:12 +08:00
    @fxxkgw 瞎说什么大实话
    用 grep、sed、awk 加点正则就行
    UnknownR
        17
    UnknownR  
       2017-05-08 20:05:26 +08:00
    个人习惯,grep 查进程什么的用的比较多,sed 和 awk 查文本比较多
    tolerance
        18
    tolerance  
       2017-05-08 20:07:09 +08:00
    数据单次利用还是重复利用,
    若单次利用 grep 足以;
    若须反复利用,建议将数据导入数据库,根据搜索的维度(如订单号)建立索引,根据业务复杂度选择关系型或者 NOSQL 数据库。
    billlee
        19
    billlee  
       2017-05-08 20:31:45 +08:00
    @ryd994 #13 应该是 gedit/nano/notepad 程序猿吧
    JiaZombie
        20
    JiaZombie  
       2017-05-08 20:59:40 +08:00
    “现在主要担心的是,用命令打开整个文件,根本打不开” ,之前 vim 打开 3GB+的文件,没什么问题。
    找内容上面已经说得很清楚了,awk, sed, grep。。。。
    woshixiaohao1982
        21
    woshixiaohao1982  
       2017-05-08 21:17:11 +08:00
    打开文件不是问题,文件再大,也是虚拟地址,只有访问的时候,会触发操作系统的页中断,
    oglop
        22
    oglop  
       2017-05-08 22:52:36 +08:00 via Android
    可以试试 silver searcher (ag)
    congeec
        23
    congeec  
       2017-05-08 23:57:25 +08:00 via iPhone
    @byfar 那是没配置好。vim 应该能秒开的。不过用 vim 搜索还是算了吧。 可以用 ag/rg 搜到位置,记下偏移,然后用 vim 打开跳到那儿就是了
    doubleflower
        24
    doubleflower  
       2017-05-09 05:54:22 +08:00 via Android
    @congeec vim 能秒开?你试过?
    congeec
        25
    congeec  
       2017-05-09 07:09:20 +08:00
    @doubleflower 我还没见过 vim 不能秒开的文件。不能秒开要么是哪儿出 bug 了,要么就是某插件要花很多时间 parse。给个大文件,我打开你瞅瞅
    doubleflower
        26
    doubleflower  
       2017-05-09 07:26:33 +08:00
    @congeec 人家是 2.5 个 G,你电脑上有视频文件有 2G 以上的吧,打开个试试能不能秒开
    lilifenghao44
        27
    lilifenghao44  
       2017-05-09 08:47:11 +08:00
    less -n 日志文件 ,命令模式下 /搜索词 搜索.
    这种应该可以搜索再问哦.
    @congeec vi 应该是默认全部读入内存吧,难道现在有什么更新了.
    ceshi123
        28
    ceshi123  
    OP
       2017-05-09 09:01:24 +08:00
    @fxxkgw 懒得理你,也不想跟你废话,你如果懂,你就指导下,我会感谢你,不懂的话就不要说什么风凉话
    Seymer
        29
    Seymer  
       2017-05-09 10:08:33 +08:00
    如果不是非要在 Linux 命令下操作,你或许可以试试 Windows 下的这款日志查看工具 LogViewer Pro,可以满足你的需求。
    vuuv
        30
    vuuv  
       2017-05-09 10:27:33 +08:00
    grep -F 订单号 文件

    说实话, 2.5G 不算大. -F 参数搜索很快的.
    willakira
        31
    willakira  
       2017-05-09 10:27:49 +08:00
    less/grep
    lkmmmj
        32
    lkmmmj  
       2017-05-09 11:31:38 +08:00
    less
    xiaket
        33
    xiaket  
       2017-05-09 11:57:42 +08:00
    我还以为谁写了一个上 T 的文件呢... 大失所望
    congeec
        34
    congeec  
       2017-05-09 13:18:15 +08:00 via iPhone
    @doubleflower 大兄弟你这个是要肛上了么。我电脑上 vim 打开 10G 的视频也没问题。其实 vim 打开音频比文本更快,二进制文件直接显示,UTF8 编码之类的还得多处理下。
    @lilifenghao44 vi 我不知道啥样,vim 一直是增量处理的(我从 7 开始用的)
    we3613040
        35
    we3613040  
       2017-05-09 18:30:11 +08:00
    grep
    sola97
        36
    sola97  
       2017-05-09 21:15:57 +08:00
    你的电脑不会连空闲的 2.5G 的内存都没有吧
    refraction
        37
    refraction  
       2017-05-09 22:13:52 +08:00
    ivyliner
        38
    ivyliner  
       2017-05-10 09:19:01 +08:00
    grep , 25G 都搞过 :-)
    components
        39
    components  
       2017-05-10 10:01:19 +08:00
    用 fopen?
    livem
        40
    livem  
       2021-01-08 14:43:09 +08:00
    less 就可以了,不知道 less 有没有最大文件的上限
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     988 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:48 PVG 06:48 LAX 14:48 JFK 17:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86