热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

过滤数百万条记录的平面文件中的数据-filteringdatainaflatfilewithmillionsofrecords

Ihaveagzippedfiletradedata.txt.gzwhichcontainsmillionsofrecords.thisfilehasabout50fi

I have a gzipped file tradedata.txt.gz which contains millions of records. this file has about 50 fields separated by |. The 45th field can contain values such as 0000, 0002, 0003, 0004 and blank value(null). I want to filter the file and get those rows with value 0000,0002 and blank values only. I want to do this in the fastest way using awk, perl, or any other language.

我有一个gzip压缩文件tradedata.txt.gz,其中包含数百万条记录。此文件有大约50个以|分隔的字段。第45个字段可以包含诸如0000,0002,0003,0003和空值(空值)之类的值。我想过滤文件并获取值为0000,0002且仅为空值的行。我想使用awk,perl或任何其他语言以最快的方式执行此操作。

For example, the data looks like this (I am only displaying few fields for illustration purposes).

例如,数据看起来像这样(我只显示几个字段用于说明目的)。

abc|234|test|0000|test2|1
abc|2343|test1|0002|test2|1
abc|2345|test3|0004|test2|1
abc|2346|test4|0004|test2|1
abc|2347|test5|0003|test2|1
abc|2348|test6||test2|1
abc|234|test|0003|test2|1

The results after filtering the data should be:

过滤数据后的结果应为:

abc|234|test|0000|test2|1
abc|2343|test1|0002|test2|1
abc|2348|test6||test2|1

As you can see, I am only pulling records with value 0000,0002 and blank. Can someone help with this request using awk, perl or anything other language that does it the fastest way?

正如您所看到的,我只会提取值为0000,0002且空白的记录。有人可以使用awk,perl或其他任何语言以最快的方式帮助处理此请求吗?

2 个解决方案

#1


Using awk:

$ awk -F'|' '$4=="0000"||$4=="0002"||$4==""' file
abc|234|test|0000|test2|1
abc|2343|test1|0002|test2|1
abc|2348|test6||test2|1

Change $4 to $45 for your actual input file.

将实际输入文件的$ 4更改为$ 45。

Using perl:

$ perl -F'\|' -lane 'print if grep $F[3] eq $_, ("0002", "0000", "")' file
abc|234|test|0000|test2|1
abc|2343|test1|0002|test2|1
abc|2348|test6||test2|1

Change $F[3] to $F[44] for your actual input file.

将实际输入文件的$ F [3]更改为$ F [44]。

Update:

As hobbs mentioned in the comment below, you can try the following if existing solution aren't quick enough:

正如下面评论中提到的hobbs,如果现有解决方案不够快,您可以尝试以下方法:

perl -F'\|' -lane 'print if $F[3] =~ /\A(?:0002|0000|)\z/' file

perl -F'\ |' -lane'打印如果$ F [3] =〜/ \ A(?:0002 | 0000 |)\ z /'文件

#2


Here is all in one test

这是一次测试

awk -F'|' '$4~/^(000(0|2)|)$/' file
abc|234|test|0000|test2|1
abc|2343|test1|0002|test2|1
abc|2348|test6||test2|1

推荐阅读
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 本文介绍了如何通过维持两个堆来获取一个数据流中的中位数。通过使用最大堆和最小堆,分别保存数据流中较小的一半和较大的一半数值,可以保证两个堆的大小差距为1或0。如果数据流中的数量为奇数,则中位数为较大堆的最大值;如果数量为偶数,则中位数为较大堆的最大值和较小堆的最小值的平均值。可以使用优先队列来实现堆的功能。本文还提供了相应的Java代码实现。 ... [详细]
author-avatar
技术潜行者
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有