想分析一个10G的文件,奈何开头的几行是说明。虽然目前的程序也能跑下去,但是总是感觉不好,因为每次都得进行判断 if( line.startswith("XXX"))
不知道大家有什么办法吗~
不知道大家有什么办法吗~
1
laputaprince Sep 27, 2014 sed -i -e 1,3d file
1-3 行被删除, in-place 删除。 楼主记得报告一下性能如何。 |
2
cbsw Sep 27, 2014 sed 和 awk 就是专门干这种事的,逐行分析日志文件,而不用一次加载整个文件
|
3
RangerWolf OP |
4
xcv58 Sep 27, 2014 via Smartisan T1 head tail grep awk sed 都可以,看具体需求了。
|
5
xcv58 Sep 27, 2014
刚才搜索了一下,在不改动文件系统的前提下,没有小于 O(n) 的方法。
|
6
SoloCompany Sep 27, 2014
既然程序能够识别注释(跳过前几行注释的运行复杂度是 o(0)
你又何苦费尽心思删掉这几行内容? |
9
rrfeng Sep 28, 2014 另外如果你这几行是固定内容的话,最快的就是 seek 到需要的行了。没有更快的办法……
不过相对于 10G 来说,前几十行真心可以忽略了吧 |
10
msg7086 Sep 28, 2014 via iPhone
不如合理拆开文件,变成几十个小文件呢…
|
11
RangerWolf OP |
12
ryd994 Sep 28, 2014
你先读几行看看是不是,如果是,就立刻处理,然后进循环
|
13
ryd994 Sep 28, 2014
|
14
xcv58 Sep 28, 2014 via Smartisan T1
@RangerWolf head tail 只能显示,不会改动内容。你这种情况我一般用 awk 来处理。
|