三剑客-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注入getshell
0x00 利用条件 root权限 secure_file_priv=为空或者在网站根目录下(网站根目录为d:\www,secure_file_priv=d:\也可以) 知道绝对路径 gpc关闭,这个应 ...
- $(cd "$(dirname "$0")",pwd) 解析
xx.sh 文件内容如下: #!/bin/bash BIN_FOLDER=$(cd "$(dirname "$0")";pwd) echo $BIN_FOLDE ...
- vi/vim输入中文乱码,无法输入中文解决方法
vi/vim输入中文乱码,无法输入中文解决方法 编辑/etc/vimrc或者/etc/virc,加入以下内容即可 set encoding=UTF-8 set langmenu=zh_CN.UTF-8 ...
- mysql基础之忘掉密码解决办法及恢复root最高权限办法
如果忘记了mysql的root用户的密码,可以使用如下的方法,重置root密码. 方法一: 1.停止当前mysql进程 systemctl stop mariadb 2.mysql进程停止后,使用如下 ...
- Qt 设置中文
1. 前言 在编写Qt应用程序时,有时会希望能直接设置中文字符串到界面,总结下其设置方法. 2. 设置中文 1)运行环境Qt5.5 VS2013 2)首先,查看需要设置中文的文件是否为UTF-8格式, ...
- System Verilog设计例化和连接
- week-03
1.简述HTTP交互原理 1.浏览器分析输入访问的地址 域名(IP)+$uri 2.读取浏览器缓存 3.请求DNS服务器,解析域名,返回IP 4.建立TCP连接,三次握手 5.发送请求 6.接收返回请 ...
- GO学习-(4) Go语言基础之变量和常量
Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...
- 5分钟就能学会的简单结构 | MLP-Mixer: An all-MLP Architecture for Vision | CVPR2021
文章转自:微信公众号「机器学习炼丹术」 作者:炼丹兄(欢迎交流,共同进步) 联系方式:微信cyx645016617 论文名称:「MLP-Mixer: An all-MLP Architecture f ...
- javascript数组排序之冒泡排序
冒泡排序 作为一名程序员数组的排序算法是必须要掌握的,今天来说最简单的一种数组排序----冒泡排序 冒泡排序原理 冒泡排序算法是一种简单直观的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如 ...