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的更多相关文章

  1. 完整版的CAD技巧!3天轻松玩转CAD,零基础也能学会

    最近有很多小伙伴反应,CAD图纸学起来有点小困难,也许你还没能掌握技巧,CAD大神带你3天轻松玩转CAD,零基础也能快速学会. 一.看懂图纸是关键 CAD制图首先得让自己知道要绘制什么,如果心中对图纸 ...

  2. 2021 .NET Conf China 主题分享之-轻松玩转.NET大规模版本升级

    去年.NET Conf China 技术大会上,我给大家分享了主题<轻松玩转.NET大规模版本升级>,今天把具体分享的内容整理成一篇博客,供大家研究参考学习. 一.先说一下技术挑战和业务背 ...

  3. 干货: 可视化项目实战经验分享,轻松玩转 Bokeh (建议收藏)

    作者 | Will Koehrsen 翻译 | Lemon 译文出品 | Python数据之道 (ID:PyDataRoad) 本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bok ...

  4. 在KCloud上轻松“玩转”Docker

    继CoreOS和Atomic镜像上线之后,刻通云紧跟Docker技术发展脚步,近期又推出了Ubuntu Core镜像,成为国内首家支持Ubuntu Core镜像的基础云服务商,同时也是国内唯一一家同时 ...

  5. CAP带你轻松玩转Asp.Net Core消息队列

    CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Star),具有轻量级.易使用.高性能 ...

  6. 轻松玩转windows之redis实战

    Redis是一个常用的键值对数据库.本篇分享一下如何轻松在睿江云上实现基于windows的redis开发环境. 1. 登录睿江云 点击右上角登录框 ​ 进入登录页面,输入账号密码登录 ​ 进入控制台, ...

  7. CAP带你轻松玩转ASP.NETCore消息队列

    CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Start),具有轻量级.易使用.高性 ...

  8. 架构篇 | 带你轻松玩转 LAMP 网站架构平台(一)

    作者 | JackTian 微信公众号 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)备注:来自博客园 1.什么是 LAMP 架构? LAMP 架 ...

  9. 轻松玩转jquery。

    一.简介 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery产生的对象时jQuery独 ...

  10. Vim 的补全模式加速器,轻松玩转全部 15 种自动补全模式

    1. 关于 Vim 补全模式    ---- Vim 一共提供了 15 种自动补全的模式(:help ins-completion).其中有两种的补全列表内容与另外两种相同,只是排序不同,这 15 种 ...

随机推荐

  1. 优化器Optimal

    未完成!!!!!! 神经网络的训练主要是通过优化损失函数来更新参数,而面对庞大数量的参数的更新,优化函数的设计就显得尤为重要,下面介绍一下几种常用的优化器及其演变过程: [先说明一下要用到符号的含义] ...

  2. mocha、chai和supertest单元测试

    mocha单元测试 1. 因为有时候在代码中加了新的东西需要反复测试接口 或者 别人要求 重新跑接口非常的繁琐 2. 所有我们需要一个帮我们重复测试的东西  那就是mocha 3. 先下载 一定不要全 ...

  3. 无线配置多一个路由器作为家庭wifi的无线热点?

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/ 手头上有个 MERCURY 的破旧路由器,怎么配置它,让它作为 ...

  4. 在Ubuntu上安装Odoo时遇到的问题

    这两天开始看<Odoo快速入门与实践  Python开发ERP指南>(刘金亮 2019年5月第1版 机械工业出版社).试着在Ubuntu上安装Odoo,遇到很多问题,通过在网上查找,都已解 ...

  5. Portainer 基本功能介紹之升級映像檔並更新 Container

    文档地址:https://www.asustor.com/zh-tw/online/College_topic?topic=145#dpt7

  6. EFK-3: ES多实例部署

    转载自:https://mp.weixin.qq.com/s?__biz=MzUyNzk0NTI4MQ==&mid=2247483816&idx=1&sn=bfaf70613b ...

  7. Prometheus 监控报警系统 AlertManager 之邮件告警

    转载自:https://cloud.tencent.com/developer/article/1486483 文章目录1.Prometheus & AlertManager 介绍2.环境.软 ...

  8. C#-01 关于C#中传入参数的一些用法

    实验环境 实验所处环境位于vs2019环境中 学习内容 一.最基础的参数传入:值参数 对于这种传入,和其他的c,c++编程语言参数传入一样,没有太大差别,在这里给如下例子: 虽然这里并没有进行传参但是 ...

  9. Spring笔记三

    Spring-03 1. AOP 1.1 概念 ​ AOP为Aspect Oriented Programming的缩写,意为:面向切面编程.他是一种可以在不修改原来的核心代码的情况下给程序动态统一进 ...

  10. JS---HelloWorld

    1.功能效果图 2.代码实现 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...