linux – 打印Unix中两个大文件不常见的行的最佳方法

linux – 打印Unix中两个大文件不常见的行的最佳方法,第1张

概述我有两个文件格式如下. File1: – 它包含4列.第一个字段是文本格式的ID,其余列也是一些文本值. id1 val12 val13 val14id2 val22 val23 val24id3 val32 val33 val34 File2 – 在文件二中我只有ID. id1id2 产量 06002 我的问题是:如何从第一个文件中查找其ID(第一个字段)未出现在第二个文件中的行.这两个文 我有两个文件格式如下.
file1: – 它包含4列.第一个字段是文本格式的ID,其余列也是一些文本值.

ID1 val12 val13 val14ID2 val22 val23 val24ID3 val32 val33 val34

file2 – 在文件二中我只有ID.

ID1ID2

产量

06002

我的问题是:如何从第一个文件中查找其ID(第一个字段)未出现在第二个文件中的行.这两个文件的大小非常大,file1包含4200万行,大小为8GB,file2包含3300万个ID.两个文件中的ID顺序可能不同.

解决方法 你可以用awk这样做:

awk 'FNR == NR { h[] = 1; next } !h[]' file2 file1

第一个块将ID2从file2收集到h哈希中.如果file2中不存在ID,则最后一部分(!h [$1])执行默认块({print $0}).

总结

以上是内存溢出为你收集整理的linux – 打印Unix中两个大文件不常见的行的最佳方法全部内容,希望文章能够帮你解决linux – 打印Unix中两个大文件不常见的行的最佳方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1021944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存