awk5个使用场景
awk简介
- 首先要知道awk的使用场景,需了解awk有哪些优势与短板。
- 关于个人近期学习awk总结其优势:
- awk对文本的处理运算效率同比其他工具效率高很多(比shell的for循环高10倍以上,运算比bc计时器也高很多)
- awk默认可对多个空格进行列切分,需要再借助其他工具。
- awk可以对任意多个字符进行列分隔。
- 如果文本列很多,可通过NF定位到最后一列获取列数据。
- awk工具处理文本的命令非常丰富,几乎可以看成一套完整的编程语言。
- 缺点
- awk无法修改文本文件。
awk案例
案例场景:/etc/passwd 第一列、第三列、最后一列
awk -F":" '{printf "%-20s%-3s%15s\n",$1,$3,$NF}' /etc/passwd

案例场景:获取内存信息、IP地址信息、磁盘分区信息
内存信息:
free -h|awk '/^Mem/{printf"已使用内存:%s\n当前空闲内存:%s\n内存使用率:%.2f%\n",$4,$3,$3/$2*100}'

IP地址:
ip address show eth0 |awk -F" +|/" '/inet/{printf"IP地址:%s\n",$3}'

磁盘信息:
df -h|awk -v i=0 -F" +|/" '/\/dev\/(nvm|sdb)/{i++ ;printf"%s.分区名称:%s\t大小:%s\t已使用:%s\t使用率:%s\n",i,$3,$4,$5,$7}'

案例场景:做简单循环,写一个九九乘法表并统计运行时间,以及比较shell for循环的运算时间
time(awk 'BEGIN{for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf"%s*%s=%s\t",i,j,i*j;if(j==i){printf"\n"} }}}')

time(for((i=1;i<=9;i++)) ;do for(( j=1;j<=i;j++)) ;do echo -en "$i*$j=$((i*j)) " ; if(($i==$j)) ;then echo -e "\n" ;fi ;done ;done)

案例场景:做多循环运算再统计运行时间,比较shell for循环运算时间
time(awk -v num=0 'BEGIN{for(i=1;i<=1000000;i++){ num+=i};print num}')

time( num=0;for((i=1;i<=1000000;i++)) ;do let num=$((num + i)) ;done ;echo $num)

案例场景:统计用户访问站点IP的个数,以apache日志为例
cat /var/log/httpd/access_log-20220828|awk '{ ips[$1]++ }END{for(i in ips){print i,ips[i]}}'

awk5个使用场景的更多相关文章
- 拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?
写在前面 除了博文内容之外,和 netfocus 兄的讨论,也可以让你学到很多(至少我是这样),不要错过哦. 阅读目录: 迷雾森林 找回自我 开源地址 后记 毫无疑问,领域驱动设计的核心是领域模型,领 ...
- [NodeJS] 优缺点及适用场景讨论
概述: NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”,那么它的出现是为了解决什么问题呢,它有什么优缺点以及它适用于什么场景呢? 本文就个人使用经验对这些问题进行探讨. 一. ...
- Asp.Net MVC中使用StreamReader读取“Post body”之应用场景。
场景:有三个市场(Global.China.USA),对前台传过来的数据有些验证需要细化到每个市场去完成. 所以就出现了基类(Global)和派生类(China.USA) 定义基类(Global)Pe ...
- Java学习之反射机制及应用场景
前言: 最近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,既然用到了就想着好好学习总结一下,其实无论是之前的EventBus 2.x版本还是Retrofit.早期的View注解框 ...
- Android线程管理之ThreadLocal理解及应用场景
前言: 最近在学习总结Android的动画效果,当学到Android属性动画的时候大致看了下源代码,里面的AnimationHandler存取使用了ThreadLocal,激起了我很大的好奇心以及兴趣 ...
- MVC常遇见的几个场景代码分享
本次主要分享几个场景的处理代码,有更好处理方式多多交流,相互促进进步:代码由来主要是这几天使用前端Ace框架做后台管理系统,这Ace是H5框架里面的控件效果挺多的,做兼容也很好,有点遗憾是控件效果基本 ...
- RabbitMq应用一的补充(RabbitMQ的应用场景)
直接进入正题. 一.异步处理 场景:发送手机验证码,邮件 传统古老处理方式如下图 这个流程,全部在主线程完成,注册->入库->发送邮件->发送短信,由于都在主线程,所以要等待每一步完 ...
- javascript之闭包理解以及应用场景
半个月没写博文了,最近一直在弄小程序,感觉也没啥好写的. 之前读了js权威指南,也写了篇博文,但是实话实说当初看闭包确实还是一头雾水.现在时隔一个多月(当然这一段时间还是一直有在看闭包的相关知识)理解 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...
随机推荐
- UiPath直播课程
UiPath实现拉勾招聘信息的抓取和汇总 https://www.bilibili.com/video/av81859882 UiPath企业框架Reframework的介绍和使用 https://w ...
- Quick Pow: 如何快速求幂
今天讲个有趣的算法:如何快速求 \(n^m\),其中 n 和 m 都是整数. 为方便起见,此处假设 m >= 0,对于 m < 0 的情况,求出 \(n^{|m|}\) 后再取倒数即可. ...
- HDFS数据平衡
一.datanode之间的数据平衡 1.1.介绍 Hadoop 分布式文件系统(Hadoop Distributed FilSystem),简称 HDFS,被设计成适合运行在通用硬件上的分布式文件 ...
- Tapdata 等40余家行业知名企业,应邀参与共建 NextArch Foundation
日前,Linux 基金会执行董事 Jim Zemlin 于 Linux 基金会会员峰会(The Linux Foundation Member Summit)上宣布,Linux 基金会正式成立 N ...
- Linux操作系统(4):磁盘分区、挂载
Outline: ① lsblk :查看所有设备挂载情况 ② df -h :查询系统整体磁盘使用情况 ③ du -h /目录 :查询指定目录的磁盘占用情况 ④ mount :查询系统中已经挂载的设备 ...
- Eolink 全局搜索介绍【翻译】
随着前后端分离成为互联网项目开发的标准模式, API 成为了前后端联通的桥梁.而面对越来越频繁和复杂的调用需求,项目里的 API 数量也越来越多,我们需要通过搜索功能来快速定位到对应的 API来进行使 ...
- markdown练习显示
1.[markdown学习网址1]https://sspai.com/post/25137 2.[markdown学习网址1]https://www.runoob.com/markdown/md-pa ...
- Java之struts2框架学习
Java之struts2框架学习 About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全 ...
- 部署yum仓库
YUM介绍 YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器. 基于RPM包管理,能够从指定的 ...
- CF1656D K-good
题意: 给定一个整数 \(n\),请找出一个大于等于 \(2\) 的整数 \(k\),使得 \(n\) 可以表示成 \(k\) 个除以 \(k\) 的余数互不相同的数之和. 注意\(k\)个除以 \( ...