三剑客-awk
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的更多相关文章
- 性能工具之linux三剑客awk、grep、sed详解
前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...
- Linux三剑客awk
Linux三剑客awk awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式 awk早期在Unix上实现,我们用的awk是gawk,是GUN ...
- Linux 三剑客 -- awk sed grep
本文由本人收集整理自互联网供自己与网友参考,参考文章均已列出,如有侵权,请告知! 顶配awk,中配sed,标配grep awk 参考 sed 参考 grep 参考 在线查看linux命令速记表 app ...
- 文本三剑客---awk(gawk)基础
gawk程序是Unix中原始awk程序的GNU版本.gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令.在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数 ...
- Linux三剑客-AWK
1.什么是awk AWK是一种处理文本文件的语言,是一个强大的文本分析工具.有统计和计算功能. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Br ...
- 三剑客-awk(简写)
特殊要点:$0 表示整个当前行$1 每行第一个字段NF 字段数量变量NR 每行的记录号,多文件记录递增OFS 输出字段分隔符, 默认也是空格,可以改为制表符等ORS 输出的记录分隔符,默认为换行符,即 ...
- linux100day(day4)--文本处理三剑客
在介绍三剑客之前,先来认识一下通配符和正则表达式 通配符 正则表达式 作用:通过一些特殊字符,来表示一类字符内容 1.字符匹配 . 任意一个字符 [ ] 范围内的任意一个字符 [^ ] 取 ...
- 处理海量数据的grep、cut、awk、sed 命令
grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...
- awk基础学习
2019-12-20 需要巧记,很多格式,学习难度:grep.sed.awk awk知识概述 1三剑客awk命令介绍2三剑客awk命令执行原理语法结构3三剑客awk命令实操练习查询替换信息排除(取反) ...
随机推荐
- 强哥MySQL学习笔记
数据库服务器:1.数据库2.数据表 数据表:1.表结构(字段)2.表数据(记录)3.表索引(加快检索) 表引擎:1.myisam2.innodb 查看表字段desc table;删除数据库:drop ...
- 1.5 RPM红帽软件包1.6 Yum软件仓库
1.5 RPM红帽软件包 在RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件只能采取源码包的方式安装.早期在Linux系统中安装程序是一件非常困难.耗费耐心的事情,而且大多数的服务程 ...
- 006.Ansible自定义变量
ansible支持变量,用于存储会在整个项目中重复使用到的一些值.以简化项目的创建与维护,降低出错的机率. 变量的定义: 变量名应该由字母.数字下划数组成 变量名必须以字母开头 ansible内置关键 ...
- 针对Tab键不能使用解决办法(Linux系统)
Tab键在装Linux操作系统时,最小化安装没有安装能使用Tab键的安装包,Tab键就无法使用,但命令和本该有的目标也有. 这时就需要安装bash-completion包.,废话不多说,直接上! 一. ...
- Linux_控制服务与守护进程
一.systemd 1.systemd简介 1️⃣:systemd是用户空间的第一个应用程序,即/sbin/init 2️⃣:init程序的类型: SysV风格:init(centos5),实现系统初 ...
- IDEA 自定义文件头注释
什么是 IDEA 自定义文件头注释 IDEA 自定义文件头注释指的是创建 Java 类文件时,IDEA 可以自动设置文件头的注释信息,如下: 如何设置 IDEA 自定义文件头注释 打开 File-&g ...
- 10.11 arping:发送arp请求
arping命令 是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包检查局域网内所有设备的硬件地址. arping 命令的参数选项及说明 -c <次数> ...
- Pandas之:Pandas简洁教程
Pandas之:Pandas简洁教程 目录 简介 对象创建 查看数据 选择数据 loc和iloc 布尔索引 处理缺失数据 合并 分组 简介 pandas是建立在Python编程语言之上的一种快速,强大 ...
- 【Azure 应用服务】由 Azure Functions runtime is unreachable 的错误消息推导出 ASYNC(异步)和 SYNC(同步)混用而引起ThreadPool耗尽问题
问题描述 在Azure Function Portal上显示: Azure Functions runtime is unreachable,引起的结果是Function App目前不工作,但是此前一 ...
- GO学习-(26) Go语言操作mongoDB
Go语言操作mongoDB mongoDB是目前比较流行的一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库(NoSQL)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. ...