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

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. LeetCode--038--报数(java)

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作  "one 1" ...

  2. Alpha阶段敏捷冲刺

    博客连链接集合 第一篇:http://www.cnblogs.com/just-let-it-go/p/8875433.html 第二篇:http://www.cnblogs.com/just-let ...

  3. 【LeetCode】不同路径

    如图,m × n 的网格的左上角作为起点,每次只能向右或向下移动一格,最终要到达右下角.求有多少条可能的路径. m,n 最大取 100. 我的想法是递归,分分钟实现 int uniquePaths(i ...

  4. vue中提示toFixed不是函数

     vue中toFixed获取小数点后两位 错误提示:.toFixed is not a function解决办法:Number(_this.group_cash).toFixed(2) 转自:http ...

  5. elinks快捷方式

    突然有兴趣看看Linux下的字符模式的浏览器,搜了下有好几个,在Ubuntu里“添加/删除”里找到一个,叫Elinks,安装,然后在终端运行elinks,试用了一下,不错,使用方法也挺简单的,支持多标 ...

  6. asp.net ajax控件选项卡控件的选项卡的动态显示与隐藏问题

    if (dq_gly.Yhm != "admin") { this.TabContainer1.Tabs[0].Visible = false; this.TabContainer ...

  7. M0内核的STM32实现比较精准的延时

    #include "drv_delay.h"#include "core_cm0plus.h" //我的系统时钟设置为4MHz /*************** ...

  8. PHP爬虫

    使用PHP的curl扩展抓取页面数据 PHP的curl扩展是PHP支持的允许你与各种服务器使用各种类型的协议进行连接和通信的库. 本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能 ...

  9. .net ORM框架(Dapper简单应用)

    1.引入 Dapper.dll类库 2.创建书籍模型book using System; using System.Collections.Generic; using System.Linq; us ...

  10. python3配置 opencv

    python3配置 opencv 本文适用于windows 64位系统 下的Python3.5.python3.5.pip为必备前提. 配置过程: 第一步:打开cmd命令行窗口 第二步:输入pip指令 ...