1.作用特点

排除信息

查询信息

统计信息

替换信息

2.语法格式

awk [参数] ‘模式-动作’ 文件

3.awk命令执行原理

4.命令使用方法

创建测试环境

[root@shuai ~]# cat >>awk_test.txt << EOF
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
EOF
(1)命令查询信息:
[root@shuai ~]# awk 'NR==2' awk_test.txt   (显示文件第二行内容)
Zhang Xiaoyu 390320151 :155:90:201
[root@shuai ~]# awk 'NR==2,NR==4' awk_test.txt (显示文件第二行到第四行内容)
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
[root@shuai ~]# awk 'NR==2;NR==4' awk_test.txt (显示文件第二,第四行内容)
Zhang Xiaoyu 390320151 :155:90:201
Wu Waiwai 70271111 :250:80:75
说明:在Linux系统中

A=2 赋值变量信息

A==2 真正A=2

B:按照字符查询信息:
[root@shuai ~]# awk '/Xiaoyu/' awk_test.txt     (查找有Xiaoyu的行)
Zhang Xiaoyu 390320151 :155:90:201
[root@shuai ~]# awk '/Xiaoyu/,/Waiwai/' awk_test.txt (查找Xiaoyu到Waiwai的行)
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
[root@shuai ~]# awk '/Xiaoyu/;/Waiwai/' awk_test.txt (查找Xiaoyu和Waiwai的行)
Zhang Xiaoyu 390320151 :155:90:201
Wu Waiwai 70271111 :250:80:75
(2)练习题:

1.显示xiaoyu的姓氏和ID号码

[root@shuai ~]# awk '/Xiaoyu/{print $1,$3}'  awk_test.txt
Zhang 390320151

2.姓氏是zhang的人,显示他的第二次捐款金额及他的名字

[root@shuai ~]# awk -F " |:" '/Zhang/{print $1,$3,$9}' awk_test.txt
Zhang Dandan 100
Zhang Xiaoyu 90
[root@shuai ~]# awk -F "[ :]" '/Zhang/{print $1,$3,$9}' awk_test.txt
Zhang Dandan 100
Zhang Xiaoyu 90
[root@shuai ~]# awk -F "[ :]+" '/Zhang/{print $1,$2,$5}' awk_test.txt
Zhang Dandan 100
Zhang Xiaoyu 90

3.显示所有以41开头的ID号码的人的全名和ID号码

[root@shuai ~]# awk '$3~/^41/{print $1,$2,$3}' awk_test.txt
#PS:$3~/^41/表示匹配第三列以41开头的
Zhang Dandan 41117397
Liu Bingbing 41117483

4.显示所有ID号码最后一位数字是1或5的人的全名

[root@shuai ~]# awk '$3~/[1,5]$/{print $1,$2}' awk_test.txt
Zhang Xiaoyu
Wu Waiwai
Wang Xiaoai
Li Youjiu
Lao Nanhai

5.显示Xiaoyu的捐款,每个时都有以$开头, 如$110$220$330

[root@shuai ~]# awk '/Xiaoyu/{gsub(/:/,"$",$NF);print $4}' awk_test.txt
$155$90$201

6.删除文件空行

[root@shuai ~]# awk '$0~!/^#|^$/' awk_test.txt

7.取ip地址

[root@shuai ~]#  ip a s eth0 | awk -F "[ /]+" 'NR==3{print $3}'
10.0.0.200
总结:

gusb使用方法gsub(/需要替换的内容/,”替换成什么”,需要替换那列) ​

$NF表是最后一列

​$(NF-1)倒数第二列 ​

$0表示整列

5.awk高级功能说明

(1)对日志信息进行统计(计数)

(2)对日志信息进行求和

(3)(数组)进行排序分析

(4)可以进行脚本编写(循环语句 判断语句)

6.awk模式概念说明

普通模式:

01.正则表达式作为模式

awk ‘/^shuai/’ awk_test.txt

02.利用比较匹配信息

NR==2 显示第二列

NR>2 显示第三列到最后一列

NR<2 显示第一列

03.范围模式

NR==2,NR==4 显示第二列到第四列

特殊模式

BEGIN{print } 在awk执行命令前做什么事情,还可以做计算,修改内置变量

[root@shuai ~]# awk 'BEGIN{print "姓","名","ID","捐款记录"}{print $0}' awk_test.txt |column -t姓     名        ID          捐款记录
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
[root@shuai ~]# awk 'BEGIN {print 1+1}'
2
[root@shuai ~]# awk 'BEGIN{FS=":"}{print $2}' awk_test.txt
250
155

END{print } 在awk执行命令之后做的事情

[root@shuai ~]# awk 'BEGIN{print "姓","名","ID","捐款记录"}{print $0}END{print "执行结束"}' awk_test.txt |column -t
姓 名 ID 捐款记录
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
执行结束

练习题:

1.统计/etc/services有多少空行

[root@shuai ~]# awk '/^$/{i++}END{print i}' /etc/services
17

2.统计系统中有多少个虚拟用户

[root@shuai ~]# awk '$NF~/nologin$/{i++}END{print i}' /etc/passwd
20

3.统计每个人三次共捐了多少钱

[root@shuai ~]# awk -F "[ :]+" '{sum=$4+$5+$6;print sum}'  awk_test.txt
525
446
360
405
525
280
618
550
525

4.统计所有人第一次捐款的总额和第三次捐款的总额,并显示表头

[root@shuai ~]# awk -F "[ :]+" 'BEGIN{print"第一次总计捐款","第二次总计捐款"}{sum=sum+$4;i=i+$6}END{print sum,i}'  awk_test.txt |column -t
第一次总计捐款 第二次总计捐款
1880 1486

[root@shuai ~]# awk -F "[ :]+" '{sum=$4+$5+$6;print sum}' awk_test.txt 525 446 360 405 525 280 618 550 525

三剑客-awk的更多相关文章

  1. 性能工具之linux三剑客awk、grep、sed详解

    前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...

  2. Linux三剑客awk

    Linux三剑客awk awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式 awk早期在Unix上实现,我们用的awk是gawk,是GUN ...

  3. Linux 三剑客 -- awk sed grep

    本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...

  4. 文本三剑客---awk(gawk)基础

    gawk程序是Unix中原始awk程序的GNU版本.gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令.在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数 ...

  5. Linux三剑客-AWK

    1.什么是awk AWK是一种处理文本文件的语言,是一个强大的文本分析工具.有统计和计算功能. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Br ...

  6. 三剑客-awk(简写)

    特殊要点:$0 表示整个当前行$1 每行第一个字段NF 字段数量变量NR 每行的记录号,多文件记录递增OFS 输出字段分隔符, 默认也是空格,可以改为制表符等ORS 输出的记录分隔符,默认为换行符,即 ...

  7. linux100day(day4)--文本处理三剑客

    在介绍三剑客之前,先来认识一下通配符和正则表达式 通配符 正则表达式 作用:通过一些特殊字符,来表示一类字符内容 1.字符匹配 .     任意一个字符 [ ]   范围内的任意一个字符 [^ ] 取 ...

  8. 处理海量数据的grep、cut、awk、sed 命令

    grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...

  9. awk基础学习

    2019-12-20 需要巧记,很多格式,学习难度:grep.sed.awk awk知识概述 1三剑客awk命令介绍2三剑客awk命令执行原理语法结构3三剑客awk命令实操练习查询替换信息排除(取反) ...

随机推荐

  1. 常用加密算法学习总结之数字证书与TLS/SSL

    数字证书 对于一个安全的通信,应该有以下特征: 完整性:消息在传输过程中未被篡改 身份验证:确认消息发送者的身份 不可否认:消息的发送者无法否认自己发送了信息 显然,数字签名和消息认证码是不符合要求的 ...

  2. 010.Ansible_palybook 循环语句

    Ansible循环语句 1 简介 我们在编写playbook的时候,不可避免的要执行一些重复性操作,比如指安装软件包,批量创建用户,操作某个目录下的所有文件等.正如我们所说,ansible一门简单的自 ...

  3. nginx负载均衡搭建phpmyadmin加入redis了解session会话原理

    myphpadmin项目理解cookie和session 当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session: 环境配置 hostn ...

  4. 利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app -(转载)

    第一步:先打开第一个hex文件, 第二步:选择 "Merge data file",合并文件 第三步:两个工程有可能地址相同,会有如下提示:(如果在编译的时候设置好Flash的地址 ...

  5. Java8 Period 类与 Duration 类 用法详解

    引言 Java 8 中引入了两个与日期相关的新类: Period :基于日期值 Duration:基于时间值 它们最大的作用就不需要你自己复杂的计算关于两个年月日之间的相差的时间或日期啦. Perio ...

  6. linux中级之ansible配置(roles)

    一.roles介绍 什么情况下用到roles? 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器.我们如何来定义playbook? 第 ...

  7. EasyUI系列—点击按钮加载tabs_day26

    我们先来看下效果图 1.为div添加点击事件(也可使用jQuery绑定事件) 1 <div id="mm2" style="width:100px;"&g ...

  8. Spring5.0源码学习系列之事务管理概述

    Spring5.0源码学习系列之事务管理概述(十一),在学习事务管理的源码之前,需要对事务的基本理论比较熟悉,所以本章节会对事务管理的基本理论进行描述 1.什么是事务? 事务就是一组原子性的SQL操作 ...

  9. PHP8开启PHPStorm + Xdebug3

    下载Xdebug 需要下载对应php版本xdebug 否则对加载xdebug失败 https://xdebug.org/download 我的是PHP版本 为php8.0.3-nts-x64 安装xd ...

  10. 解决了一个java服务线程退出的问题

    问题背景 ​ 早上才上班,测试就提了一个问题:"昨天所有批量任务都没有跑".我看了一下任务监控页面,任务是有生成的,但却一直在等待调度状态.初步怀疑是我们的调度服务问题,于是上去查 ...