当前位置:网站首页>awk实现类sql的join操作
awk实现类sql的join操作
2020-11-07 18:55:00 【程序猿欧文】
awk、grep和sed被称为linux三剑客,事实上grep和awk我在日常工作中也常用到(sed用的比较少),可能有些人对awk了解比较少,我先大概介绍下。 很多人以为awk只是一个文本处理工具,实际上他们也是这么用的。但事实上它其实是一门语言,拥有数学运算符、进程控制语句,甚至针对于文本处理封装了很多内置变量和函数,这造就了它强大的文本处理能力。 如果grep只能做到数据的筛选,那awk还能做到数据的处理、分析甚至生成报表,毕竟它是一门完整的编程语言。
因为这篇文章不是awk的入门教程,如果想入门的话我推荐阮一峰老师的awk 入门教程 和 左耳朵耗子的AWK 简明教程 。
回到我今天的正题,今天我给大家看个我常使用awk的场景。因为做后端开发,经常在做数据分析的时候会有这样的问题,1.面对几十万条的数据,需要筛选出几百几千个特定key的数据。2.对这几百万条数据,针对其中的id字段补齐其他字段。
这时候可能有精通excel的同学跳出来说 “就这,so easy,vlookup就搞定!” ,事实上,excel确实可以解决问题,但有点重,甚至有些时候我们在服务器上还用不了excel。还有啥其他方法?针对我说的这俩场景,其实仔细想一下,是不是sql中俩表join就能解决问题。实际上你并不需要真正把文件灌到数据库里,只需要用awk一条命令就能解决。
实例
我们把问题具像下,假设有两个文件,score.txt存着学号+成绩的数据,另外一个name.txt存着学号+姓名的数据,你现在想知道每个人都烤了多少分。
score.txt
id score 1 872 673 684 755 906 1007 0
name.txt
id name 1 张三2 李四3 王五4 赵二5 刘能6 熊大
你想得到一份包含学号 姓名和成绩的数据,就像下面这样。
id score name 1 87 张三2 67 李四3 68 王五4 75 赵二5 90 刘能6 100 熊大7 0
用awk生成这样的数据有多简单?只需要一行代码,你可以保存name.txt和score.txt,然后执行下面命令尝试下。
awk 'ARGV[1]==FILENAME {map[$1]=$2} ARGV[2]==FILENAME {print $0, map[$1]}' name.........
版权声明
本文为[程序猿欧文]所创,转载请带上原文链接,感谢
https://my.oschina.net/mikeowen/blog/4707660
边栏推荐
- Windows 10 Bluetooth management page 'add Bluetooth or other devices' option click no response solution
- k-vim安装及The ycmd server SHUT DOWN (restart with ':YcmRestartServer')这种错误的解决方法
- How to write plug-in code of small program mall system? How to use code to check whether the plug-in is successfully added?
- JS string - string string object method
- 条形码识别性能低,如何优化Dynamsoft Barcode Reader解码性能
- LEADTOOLS如何检测,读取和写入条形码
- Blazor 準備好為企業服務了嗎?
- Knowledge competition of garbage classification
- REM: the solution of PC and mobile
- About Devops seven misunderstandings, 99% of people have been hit!
猜你喜欢
Let you have a deep understanding of gitlab CI / CD principle and process
REM: the solution of PC and mobile
7. Swarm builds clusters
Knowledge competition of garbage classification
Three steps to understand Kerberos Protocol easily
9.集群之间服务通信 RoutingMesh
JVM class loading mechanism
2020-11-06: go, let's talk about the scheduler.
垃圾分类知识竞赛
Plug in bilibilibili new version 0.5.5
随机推荐
9. Routingmesh service communication between clusters
11.Service更新
.NETCore3.1+ Vue.js Low code workflow engine
Opencv computer vision learning (10) -- image transform (Fourier transform, high pass filter, low pass filter)
Idea activation to 2089 failure
Nanjing logo design and production, guide VI system design
New features of vue3
JVM class loading mechanism
STlink下载出现st-link usb communication error解决方法
Classroom exercises
使用LWA和Lync模拟外部测试无边缘单前端环境
[graffiti footprints of Internet of things] mainstream communication mode of Internet of things
抽絲剝繭——門面和調停者設計模式
Solution to st link USB communication error in stlink Download
RECH8.0版本学习 days 12 rh134部分
RFID fixed assets management system for fire equipment
Design pattern of facade and mediator
Insomnia all night
idea 激活到 2089 失效
7. Swarm builds clusters