今天我们说的不是简单的交集,而是如下示例:

file1:

as,er,gf,1212
kl,iop,1213
78,jkl,uio,jki,1214
vbnm,yuoi,678i,1215
sadfasdf,werqwerqw,qwerqwe,11111
uioupoiuiop,jklghj,217890

file2:


说下需求,以f2为准,匹配f1,并输出交集

如果数据量很小可以直接使用grep -f 来实现:

grep -f f2 f1
as,er,gf,1212
kl,iop,1213
78,jkl,uio,jki,121

但是如果像我的生产实例一样,100w的数据量,就会出问题,

看来这样操作不仅费时,还很耗内存,

接着介绍我们今天的主角,强大的awk:

time awk  -F',' 'NR==FNR{a[$1]++}NR>FNR{if($NF in a){print}}' oss_uuid front_90w-.txt >>test

我们看下用时:

仅仅用了7s

简单解释一下上面的awk命令:

time:打印命令执行的时间


NR==FNR{a[$]++} #处理第一文件,也就是 oss_uuid 换成我们示例的,就是file2,将文件转换为数组格式

NR>FNR{if($NF in a){print}} #处理第二个文件,也就是 front_90w-1.txt,换成我们示例中,就是file1,将最后一列去file2中去做匹配,并输出匹配到的行。

awk,强大!

 

awk 进阶,百万行文件取交集的更多相关文章

  1. C# 对List<T>取交集、连集及差集

    1. 取交集 List A :{1,5,9,3,7} List B:{1,6,8,5,3,2,9,4} var intersectedList = listA.Intersect(listB, new ...

  2. List<T>取交集、差集、并集

    1.  取交集 (A和B都有) List A : { 1 , 2 , 3 , 5 , 9 }List B : { 4 , 3 , 9 }var intersectedList = list1.Inte ...

  3. 第10章:awk进阶操作

    第10章:awk进阶操作 在第4章:查找与替换简单的讲解了awk的使用,本章介绍详细讲解awk的使用.awk是一个强大的文本分析工具,简单的说awk就是把文件逐行的读入, 以空格为默认分隔符将每行切片 ...

  4. [转][C#] 对List<T>取交集、连集及差集

    本文转自:http://www.cnblogs.com/shuibin/archive/2012/04/19/2457867.html 最近在專案中,剛好遇到這個需求, 需要比對兩個List,進行一些 ...

  5. 俄罗斯水手 [C#] 对List<T>取交集、连集及差集

    ※本文使用int為例,若為使用自訂之DataModel,需實作IEquatable<T>介面才能使用 1.  取交集 (A和B都有) List A : { 1 , 2 , 3 , 5 , ...

  6. 一个JS多个数组取交集算法

    如题,多个数组中取交集(共同拥有元素),思路取第一个数组去跟每个数组中的元素对比,同时比较数据类型有救返回没有就返回null. 下面介绍到的算法数据格式是二维数组如: const parentArra ...

  7. gcp – 源于CP的高级命令行文件拷贝工具

    作者:linux 出处:http://linux.cn/thread/11868/1/1/ gcp – 源于CP的高级命令行文件拷贝工具 几周前,我们讨论了高级拷贝(修改于cp命令,让其可以显示复制进 ...

  8. sql server中取交集、差集和并集的语法

    这里简单总结下在SQL Server中取交集.差集和并集的语法. 交集:INTERSECT(适用于两个结果集) SELECT ID, NAME FROM YANGGB1 INTERSECT SELEC ...

  9. 关于Linux操作系统的命令行文件拷贝

    关于Linux操作系统的命令行文件拷贝 起因:服务器的加密狗秘钥过期导致无法使用服务,需要将服务器里面的秘钥文件发送给授权人员.本以为十分容易,打开服务器,图形界面点击发送即可.没想到服务器的界面是命 ...

随机推荐

  1. ionic调用手机系统的拨打电话

    android调用如下: 在config.xml中添加 <access origin="tel:*" launch-external="yes" /> ...

  2. mongo学习笔记---1

    mongo简介 非结构化数据库,数据都是以Bson格式(json的二进制)存储的. 特点:不需要指定表结构,存在一张表里的数据其结构可以完全不同.内部执行引擎为JS解释器, 把文档存储成bson结构, ...

  3. Node.js的缺陷

    Node.js最大的优点是事件机制,一切皆在回调中触发(不阻塞).我想缺点或许有正在于此,方法没有返回值,而只能在回调中使用返回结果,会导致事件回调嵌套,代码结构很差. 在jQuery中有一套很好的机 ...

  4. scrapy框架整理

    0.安装scrapy框架 pip install scrapy 注:找不到的库,或者安装部分库报错,去python第三方库中找,很详细 https://www.lfd.uci.edu/~gohlke/ ...

  5. Java线程池ThreadPoolExecutor&&Executors

    一.先看看传统的开启线程. new Thread(new Runnable() { @Override public void run() { } }).start(); 缺点: 1.每次new Th ...

  6. npm 设置和取消代理配置

    设置代理npm config set proxy=http://127.0.0.1:8087npm config set registry=http://registry.npmjs.org12关于h ...

  7. Php基本类型——布尔类型

    1)简介 布尔类型,这是最简单的类型,bollean表达了真值,可以为true或false,它是php4引进的. 2)语法 要指定一个布尔值,使用关键字true或false,两个都不区分大小写. &l ...

  8. linux常用命令 history命令

    历史命令 history [选项] [历史命令保存文件] 选项 '-c' 清空历史命令 '-w' 把缓存中的历史命令写入历史命令保存文件~/.bash_history [root@ssgao1987 ...

  9. Let me introduce myself

    介绍自己,从开学到这上半学期结束,不知道说了多少个版本.开学军训,要自我介绍:军训结束,在班里要自我介绍:参加社团,面试要自我介绍.....不能说对每个人,至少对于我来说,在众人面前开口介绍自己,总还 ...

  10. 为什么企业需要IT资产管理

    为什么企业需要IT资产管理 为什么企业需要IT资产管理?其实这个问题,如同企业为什么要管理一样重要. 企业需要管理.因为有了管理,人.物可尽其用,在不同的位置.角色上发挥作用,然后按照一定的运维规则, ...