当前位置:网站首页>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
边栏推荐
- Key points of C language -- index article (let you fully understand indicators) | understand indicators from memory | complete analysis of indicators
- CI / CD of gitlab continuous integrated development environment
- ImageMagick - add watermark
- Jenkins pipline stage setting timeout
- 把 4个消息队列都拉到一个群里后,他们吵起来了
- 使用RabbitMQ实现分布式事务
- ImageMagick - 添加水印
- Experiment one
- HandlerMethodArgumentResolver使用和原理
- python3操作gitlab
猜你喜欢
深入浅出大前端框架Angular6实战教程(Angular6、node.js、keystonejs、
ajax 载入html后不能执行其中的js解决方法
Developing STM32 USB with cubemx
HMS core push service helps e-commerce app to carry out refined operation
嘉宾介绍|2020 PostgreSQL亚洲大会中文分论坛:潘娟
Come on in! Take a few minutes to see how reentrantreadwritelock works!
频收罚单的浦发银行:增收不增利,曾遭骗贷数亿元,内控缺位?
Jenkins pipline stage setting timeout
Two dimensional code location and alarm system of Expressway
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
随机推荐
Getting started with varhart xgantt
2020-11-06: go, let's talk about the scheduler.
【QT】QThread原始碼淺析
PHP security: the past and present of variables
Yum [errno 256] no more mirrors to try solution
带你深入了解 GitLab CI/CD 原理及流程
如何解决谷歌Chrome浏览器空白页的问题
【笔记】Error while loading PyV8 binary: exit code 1解决方法
Kubernetes (1): introduction to kubernetes
And how to solve the conflict between pop-up menu and pop-up menu
Is blazor ready to serve the enterprise?
How to use Gantt chart layers and filters
如何使用甘特图图层和筛选器
vue踩坑:axios使用this指针
Plug in bilibilibili new version 0.5.5
深入浅出大前端框架Angular6实战教程(Angular6、node.js、keystonejs、
How to create an interactive kernel density chart
课堂练习
REM: the solution of PC and mobile
失眠一个整晚上