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. 【Cocos2d-x】屏蔽Emoji并解决由于Emoji导致的崩溃问题

    IOS的Emoji表情因为编码问题,在Android手机上无法正常显示,如果当前的cc.Label节点使用的是系统字,在系统字库中找不到对应编码的字符,会导致崩溃. 为了解决这个问题,又要兼顾新老版本 ...

  2. 对spring创建对象时为何要使用接口

    对spring创建对象时为何要使用接口,而使用接口的实现类会报错 接上一篇问题的解答:Spring AOP获取不了增强类(额外方法)和无法通过getBean()获取对象 此问题发生在动态代理时,比如对 ...

  3. [Qt] 项处理组件

                             项(Item):一个项存储了文字.文字的格式.自定义数据等. 1.项视图(Item View) 针对一个数据模型,可能有不同的展示需求,如文件夹中图片 ...

  4. 联想INTEL X86台式机 用光驱启动 usb光驱启动

    联想INTEL X86台式机  用光驱启动 usb光驱启动 启动项顺序 都要调整 主要顺序 自动顺序 出错顺序 按下f10 f12

  5. linux .tar.xz 文件解压和压缩

    场景:centos7.0下文件格式为xxx.tar.xz,解压和压缩命令: 压缩 tar -Jcf linux-3.10.0-123.13.1.el7.tar.xz(文件名) linux-3.10.0 ...

  6. 3.20 tr:替换或删除字符

    tr命令 从标准输入中替换.缩减或删除字符,并将结果写到标准输出. tr [option] [SET1]  [SET2] tr [选项]   [字符1]  [字符2]   -d    删除字符 -s  ...

  7. Java基础之概述

    1. 什么是程序 程序是计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合 2. Java三大版本 Java SE 标准版 Java EE 企业版 Java ME 小型版 3. Java重要 ...

  8. 【Dubbo】SPI

    什么是SPI SPI是JDK内置的一种服务提供发现机制.目前市面上很多框架都用它来做服务的扩展发现.简单的说,它是一种动态替换发现的机制. jdk 实现方式 需要在 classpath 下创建一个目录 ...

  9. [leetcode] 37. 解数独(Java)(dfs,递归,回溯)

    37. 解数独 1A 这个题其实15分钟左右就敲出来并且对了...但是由于我输错了一个数..导致我白白debug一个多小时.. 没啥难度,练递归-dfs的好题 class Solution { pri ...

  10. BERT模型的OneFlow实现

    BERT模型的OneFlow实现 模型概述 BERT(Bidirectional Encoder Representations from Transformers)是NLP领域的一种预训练模型.本案 ...