当前位置: 技术问答>linux和unix
工作遇到问题,用linux命令过滤数据文件,恳请大家帮忙了
来源: 互联网 发布时间:2016-10-18
本文导语: 数据文件,文件名:/home/data/vwap.tbt.20101117 IF1012,3,3157.4,16,092603, ,2010/11/17 09:24:29.566,3157.400000, IF1012,3,3157.4,1,092603, ,2010/11/17 09:24:30.067,3157.400000, cu1011,4,3157.4,1,092603, ,2010/11/17 09:24:30.068,3157.500000, IF1012,3,3157.2,4,092604, ,20...
数据文件,文件名:/home/data/vwap.tbt.20101117
IF1012,3,3157.4,16,092603, ,2010/11/17 09:24:29.566,3157.400000,
IF1012,3,3157.4,1,092603, ,2010/11/17 09:24:30.067,3157.400000,
cu1011,4,3157.4,1,092603, ,2010/11/17 09:24:30.068,3157.500000,
IF1012,3,3157.2,4,092604, ,2010/11/17 09:24:30.527,3157.400000,
IF1012,3,3156.8,2,092604, ,2010/11/17 09:24:31.051,3157.200000,
IF1012,3,3156.6,8,092605, ,2010/11/17 09:24:32.103,3157.000000,
IF1012,3,3155.2,20,092606, ,2010/11/17 09:24:32.503,3156.600000,
cu1011,4,3155.2,20,092606, ,2010/11/17 09:24:32.504,3158.600000,
IF1012,3,3155.2,2,092606, ,2010/11/17 09:24:33.025,3156.600000,
IF1012,3,3156,2,092607, ,2010/11/17 09:24:33.558,3156.400000,
M000300,1,3124.109,563959,092606,2,2010/11/17 09:24:33.703,,
IF1012,3,3156.4,7,092607, ,2010/11/17 09:24:34.083,3156.600000,
IF1012,3,3157,11,092608, ,2010/11/17 09:24:34.533,3157.000000,
IF1012,3,3156.4,3,092608, ,2010/11/17 09:24:35.057,3156.600000,
IF1012,3,3156.6,2,092609, ,2010/11/17 09:24:35.586,3156.600000,
IF1012,3,3156.6,2,092609, ,2010/11/17 09:24:36.101,3157.000000,
IF1012,3,3156.6,5,092610, ,2010/11/17 09:24:36.529,3157.000000,
观察这个数据文件:
1、每一行都有8个字段,每个字段都用“,”进行分割,第6个字段时空的,两个逗号之间是一个空格。
2、第5个字段是时间:如,2010/11/17 09:24:29.566
3、每一行都按照时间递增,所有数据的时间范围在2010/11/17 08:45:00.000到2010/11/17 15:15:30.000
我的问题是:
我想过滤出以IF1012和M000300开头的,并且时间是2010/11/17 09:24:30.527之后的所有数据,
过滤到文件 /home/data/temp.txt 中。
希望不要采用先过滤出以IF1012和M000300开头的所有数据到一个文件中,然后再从过滤出的文件中过滤出
时间2010/11/17 09:24:30.527之后的数据。因为效率对我来说很重要,如果这样的过滤方法可能效率
比较低,我的那个数据文件有600多M呢。
我考虑了好久不知道如何解决,恳请高手、大牛帮忙解决一下,多谢、非常感谢、万分感谢!
时间比较紧急,如果谁帮忙做出来,我会把分数全权给予的。再次感谢!
IF1012,3,3157.4,16,092603, ,2010/11/17 09:24:29.566,3157.400000,
IF1012,3,3157.4,1,092603, ,2010/11/17 09:24:30.067,3157.400000,
cu1011,4,3157.4,1,092603, ,2010/11/17 09:24:30.068,3157.500000,
IF1012,3,3157.2,4,092604, ,2010/11/17 09:24:30.527,3157.400000,
IF1012,3,3156.8,2,092604, ,2010/11/17 09:24:31.051,3157.200000,
IF1012,3,3156.6,8,092605, ,2010/11/17 09:24:32.103,3157.000000,
IF1012,3,3155.2,20,092606, ,2010/11/17 09:24:32.503,3156.600000,
cu1011,4,3155.2,20,092606, ,2010/11/17 09:24:32.504,3158.600000,
IF1012,3,3155.2,2,092606, ,2010/11/17 09:24:33.025,3156.600000,
IF1012,3,3156,2,092607, ,2010/11/17 09:24:33.558,3156.400000,
M000300,1,3124.109,563959,092606,2,2010/11/17 09:24:33.703,,
IF1012,3,3156.4,7,092607, ,2010/11/17 09:24:34.083,3156.600000,
IF1012,3,3157,11,092608, ,2010/11/17 09:24:34.533,3157.000000,
IF1012,3,3156.4,3,092608, ,2010/11/17 09:24:35.057,3156.600000,
IF1012,3,3156.6,2,092609, ,2010/11/17 09:24:35.586,3156.600000,
IF1012,3,3156.6,2,092609, ,2010/11/17 09:24:36.101,3157.000000,
IF1012,3,3156.6,5,092610, ,2010/11/17 09:24:36.529,3157.000000,
观察这个数据文件:
1、每一行都有8个字段,每个字段都用“,”进行分割,第6个字段时空的,两个逗号之间是一个空格。
2、第5个字段是时间:如,2010/11/17 09:24:29.566
3、每一行都按照时间递增,所有数据的时间范围在2010/11/17 08:45:00.000到2010/11/17 15:15:30.000
我的问题是:
我想过滤出以IF1012和M000300开头的,并且时间是2010/11/17 09:24:30.527之后的所有数据,
过滤到文件 /home/data/temp.txt 中。
希望不要采用先过滤出以IF1012和M000300开头的所有数据到一个文件中,然后再从过滤出的文件中过滤出
时间2010/11/17 09:24:30.527之后的数据。因为效率对我来说很重要,如果这样的过滤方法可能效率
比较低,我的那个数据文件有600多M呢。
我考虑了好久不知道如何解决,恳请高手、大牛帮忙解决一下,多谢、非常感谢、万分感谢!
时间比较紧急,如果谁帮忙做出来,我会把分数全权给予的。再次感谢!
|
忘了忘文件里写 而且看错你的条件了哇
用下面这个
awk -F',' '{if($1 ~ /^IF1012|M000300/ && $7 > "2010/11/17 09:24:30.527") print $0}' /home/data/vwap.tbt.20101117 > /home/data/temp.txt
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。