awk一行码:求交集、差集、筛选白名单数据

简介: 众所周知,awk不是一个工具/命令,它其实是一种『编程语言』。对于后台开发工程师而言,不管你是什么语言的工程师。对于统计线上数据,从日志提炼信息等等场景,awk都是必备神器!

众所周知,awk不是一个工具/命令,它其实是一种『编程语言』。

对于后台开发工程师而言,不管你是什么语言的工程师。对于统计线上数据,从日志提炼信息等等场景,awk都是必备神器!


场景1


一个TAB分割的数据文件,假设名为data.txt,第二列用户id

从中筛选用户id为123的所有数据:


awk -F'\t' '{if($2==123) print $0}'  data.txt > new_data.txt


awk的列从1计数,$1是第一列,$2是第2列……

$0是特殊的变量,表示这一整行的数据。


场景2:


如果要筛选多个用户id怎么办?

可以将待筛选的用户id存入一个文件userid.txt。一行一个id。


过滤data.txt,找到userid.txt中的用户id的数据来输出。


awk -F '\t' 'BEGIN{while(getline<"userid.txt") a[$1]=1;} {if(a[$2]==1) print $0;}' data.txt > new_data.txt


(分号也可以去掉)


BEGIN语法是在逐行解析之前执行的一段代码。这里它会加载userid.txt将用户id存入关联数组a中:key是用户id,value是1。


后面的代码块开始逐行解析,用data.txt的第二列做key去关联数组a中查找。如果查找到value为1,就输出整行。


关联数组就类似其他语言里面的dict或map。


简化:交集和差集


这一行码可以改成求两个文件的交集。只需要调整读取的列号即可。


awk -F '\t' 'BEGIN{while(getline<"a.txt") a[$0]=1;} {if(a[$0]==1) print $0;}' b.txt > ab.txt


要求差集,改下判断条件,如下便是b.txt 减去 a.txt的差集了。


awk -F '\t' 'BEGIN{while(getline<"a.txt") a[$0]=1;} {if(a[$0]!=1) print $0;}' b.txt > ba.txt



有时候我们离线处理一些数据,你会说人生苦短,我用Python。


我们当然可以用Python来实现,但是很多时候,每次写一个Python脚本,有点杀鸡用牛刀的感觉。另外就是如果一个文件特别大,比如10G。Python脚本会卡很久(除非你自己做大量优化),彼时该就上演awk的拿手好戏了,快到不敢相信。



目录
打赏
0
0
0
0
5
分享
相关文章
12 MongoDB - 数据查询(消除重复)
12 MongoDB - 数据查询(消除重复)
369 0
|
12月前
|
idea导入maven项目结构不全
idea导入maven项目结构不全
369 6
企业级推荐开发平台 PAI-Rec
本文介绍了企业推荐系统的关键技术和解决方案。主要内容分为四部分:1) 推荐系统面临的挑战,如数据治理和算法优化;2) 提高开发效率的解决方案,通过配置化和自动化减少重复工作;3) 高性能推荐算法和推理服务,包括GPU优化和特征组合;4) 高效特征管理平台PAI FeatureStore,支持离线和实时特征处理。文中还提到了EasyRecTorch框架,用于加速训练和推理,并分享了如何通过这些工具提升推荐系统的性能和降低成本。
NPDP|产品经理的沟通协调能力:塑造产品成功的核心力量
产品经理的沟通协调能力对于产品的成功和团队的高效运作至关重要。只有具备了强大的沟通和协调能力,产品经理才能更好地履行职责,推动产品的发展和公司的业务创新。
第3讲笔记:详解隐私计算框架及技术要点
隐语架构是一个分层设计,支持不同技术路线,具有高内聚、低耦合特性,允许各层次的技术人员发挥所长。它包括产品层、算法层和计算层。产品层有SecretPad和SecretNote,提供轻量化安装和全栈产品,支持MPC、TEE等。算法层涉及PSI、PIR协议和SCQL,用于安全数据分析,屏蔽底层复杂性。计算层包含RayFed分布式调度框架和SPU密态计算核心,提供高性能密态计算能力和机器学习算法支持。
366 1
Serverless与微服务(下)
微服务架构,主要是中间层分解,将系统拆分成很多小应用(微服务),微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容器上。当应用的故障不会影响到其他应用,单应用的负载也不会影响到其他应用,其代表框架有Spring cloud、Dubbo等。
540 0
Serverless与微服务(下)
如何在 hive udf 中访问配置数据-踩坑记录,方案汇总与对比-udf中可以写sql吗?
如何在 hive udf 中访问配置数据-踩坑记录,方案汇总与对比-udf中可以写sql吗?
AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等