加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:04:35 所属栏目:Linux 来源:网络整理
导读:我有两个文件格式如下. File1: – 它包含4列.第一个字段是文本格式的ID,其余列也是一些文本值. id1 val12 val13 val14id2 val22 val23 val24id3 val32 val33 val34 File2 – 在文件二中我只有ID. id1id2 产量 06002 我的问题是:如何从第一个文件中查找其ID
我有两个文件格式如下.
File1: – 它包含4列.第一个字段是文本格式的ID,其余列也是一些文本值.

id1 val12 val13 val14
id2 val22 val23 val24
id3 val32 val33 val34

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

id1
id2

产量

06002

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

解决方法

你可以用awk这样做:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读