轻松玩转awk
awk的处理方式
awk一次处理一行内容
awk对每行可以进行切片处理
例如
awk -F ':' '{print $1}' /etc/password
-F
指定每一行分割符号,这样就把被每行被:
分割的第一个单词输出了
如果不指定默认是以空格作为分割的
awk的格式
awk [options] 'command' file
另外 command
还可以分为(正则表达式,逻辑判断式)和(awk操作命令)
command:pattern {awk操作命令}
对应上面的命令 指定分隔符 -F ':'
相当于 [options]
{print $1}
相当于command中的 awk操作命令
至于 patterrn 部分后面介绍
awk内置参数
NR: 每行的行号
NF:每行的字段数量(被分割成多少段)
FILENAME:操作的文件名
例如:
awk -F ':' '{print NR,NF}' /etc/passwd
输出:
1 7
2 7
3 7
4 7
......
......
40 7
41 7
42 7
43 7
44 7
可以看到 文件一共有44行
每一行被分割成 7段
这里的,
相当于空格分割
awk中的if else语句
awk -F ':' '{if($3>100)print}' /etc/passwd
输出 uid
大于100的行
(print不加参数可以输出一整行,或者print$0也可以输出一整行)
另外也可以用到 else语句
awk -F ':' '{if($3>100)print;else print"uid小于100"}' /etc/passwd
记得加分号
awk中的 parttern
还记的我们前面挖的坑吗,patterrn还没有介绍
逻辑判断式
awk -F ':' '$3>100{print}' /etc/passwd
正则表达式
awk中的正则可以匹配一行中的字段
awk -F ':' '$1~/^r/{print $1}' /etc/passwd
匹配第一个字段 以 r
开头的每一行,然后输出出来第一个字段
正则表达式要在 / /
之间
要匹配的字段和正则之间要用 ~
连接
如果不匹配固定的字段,像这样
awk -F ':' '{print $1}' /etc/passwd
这种匹配就会匹配整行
BEGIN END语法
awk [options] BEGIN{awk操作命令} 'command' END{awk操作命令} file
BEGIN 后面执行的 awk 操作命令在文件没有输入的时候就执行了(这个时候是不能输出文件名的)
一般做统计的时候 初始化变量,或者输出表头
END 后面执行的操作也是在读取完文件的每一行后才执行的
所以 END 和 BEGIN 都是不参与循环的
awk的数组
用awk统计 netstat -apn
有多少 CONNET
和多少LISTEN
netstat -apn|awk '$6~/CONNECTED|LISTEN/{sum[$6]++}END{for(i in sum)print i,sum[i]}'
输出:
LISTEN 6
CONNECTED 803
这里可以看到 awk 的数组更类似于 python 中的字典,可以通过对应的 键访问到对应的值
轻松玩转awk的更多相关文章
- 完整版的CAD技巧!3天轻松玩转CAD,零基础也能学会
最近有很多小伙伴反应,CAD图纸学起来有点小困难,也许你还没能掌握技巧,CAD大神带你3天轻松玩转CAD,零基础也能快速学会. 一.看懂图纸是关键 CAD制图首先得让自己知道要绘制什么,如果心中对图纸 ...
- 2021 .NET Conf China 主题分享之-轻松玩转.NET大规模版本升级
去年.NET Conf China 技术大会上,我给大家分享了主题<轻松玩转.NET大规模版本升级>,今天把具体分享的内容整理成一篇博客,供大家研究参考学习. 一.先说一下技术挑战和业务背 ...
- 干货: 可视化项目实战经验分享,轻松玩转 Bokeh (建议收藏)
作者 | Will Koehrsen 翻译 | Lemon 译文出品 | Python数据之道 (ID:PyDataRoad) 本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bok ...
- 在KCloud上轻松“玩转”Docker
继CoreOS和Atomic镜像上线之后,刻通云紧跟Docker技术发展脚步,近期又推出了Ubuntu Core镜像,成为国内首家支持Ubuntu Core镜像的基础云服务商,同时也是国内唯一一家同时 ...
- CAP带你轻松玩转Asp.Net Core消息队列
CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Star),具有轻量级.易使用.高性能 ...
- 轻松玩转windows之redis实战
Redis是一个常用的键值对数据库.本篇分享一下如何轻松在睿江云上实现基于windows的redis开发环境. 1. 登录睿江云 点击右上角登录框 进入登录页面,输入账号密码登录 进入控制台, ...
- CAP带你轻松玩转ASP.NETCore消息队列
CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Start),具有轻量级.易使用.高性 ...
- 架构篇 | 带你轻松玩转 LAMP 网站架构平台(一)
作者 | JackTian 微信公众号 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)备注:来自博客园 1.什么是 LAMP 架构? LAMP 架 ...
- 轻松玩转jquery。
一.简介 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery产生的对象时jQuery独 ...
- Vim 的补全模式加速器,轻松玩转全部 15 种自动补全模式
1. 关于 Vim 补全模式 ---- Vim 一共提供了 15 种自动补全的模式(:help ins-completion).其中有两种的补全列表内容与另外两种相同,只是排序不同,这 15 种 ...
随机推荐
- Ubuntu22.04 安装配置流水账
前两天为了测一个CH340的bug, 装了三遍20.04. bug解决完, 心想反正也要重新装各种软件, 不如直接装22.04吧. 把涉及的安装记录一下方便将来参考. 制作启动U盘 在Ubuntu网站 ...
- 2022CSP-J初赛游记
2022年9月16日: 下午,在学校集训,刘洋让我看了一下时间,突然发现,距离初赛就剩2天了...... 晚上,辅导班的老师对我们进行最后的培训,做了2套有道小图灵模拟题,但是做的不理想,很慌. 20 ...
- Python数据科学手册-Pandas:合并数据集
将不同的数据源进行合并 , 类似数据库 join merge . 工具函数 concat / append pd.concat() 简易合并 合并高维数据 默认按行合并. axis=0 ,试试 axi ...
- Stream流式计算
Stream流式计算 集合/数据库用来进行数据的存储 而计算则交给流 /** * 现有5个用户,用一行代码 ,一分钟按以下条件筛选出指定用户 *1.ID必须是偶数 *2.年龄必须大于22 *3.用户名 ...
- typora基础和计算机五大组成部分
typora typora软件 是一款适合于IT行业文本编辑器,笔记,当下来说,非常火爆,可以使用多种语言,python java... 安装的时候路径选择可以设置一些简单便于后续查找的文件路 ...
- 洛谷P1908 逆序对 (树状数组+离散化)
模板题,树状数组加上离散化求逆序对. 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 ...
- Windows常用快捷键及基本的Dos命令
Windows 常用快捷键 Ctrl + C: 复制 Ctrl + V: 粘贴 Ctrl + A: 全选 Ctrl + X: 剪贴 Ctrl + Z: 撤销 Ctrl + S: 保存 Alt + F4 ...
- 插入排序算法(Java代码实现)
其它经典排序算法:https://blog.csdn.net/weixin_43304253/article/details/121209905 插入排序算法: 思路:将数据分为已经排序好的数据和未排 ...
- Vue学习之--------el与data的两种写法、MVVM模型、数据代理(2022/7/5)
文章目录 1.el与data的两种写法 1.1.基础知识 1.2.代码实例 1.3.页面效果 2.MVVM模型 2.1. 基础知识 2.2 .代码实例 2.3.页面效果 3.数据代理 3.1. 基础知 ...
- 重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]
前言 简单整理一个linux 简单上线. 这个是该系列的外篇,该系列继续更新.献给刚学的人. 正文 安装实例 dotnet new webapp -n AspNetCoreDemo -o firstw ...