shell三剑客-----awk命令

目录

一,awk概述

1,awk工作原理

二,awk的格式

三,内置变量演示

2, awk常用内置变量

 3,NF(多少列) 和[NR](所少行)的演示

 四,面试题

 五。BEGIN开始和END结尾


一,awk概述

AWK是一种处理文本的语言,是一个强大的文件分析工具。

它专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描过滤统计词汇等工作,数据可以来自标准输入也可以是管道或者文件。

1,awk工作原理

  • 当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行的数据处理,不会默认输出。
  • 如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。
  • 逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或条件执行编辑命令

与sed比较

  • sed命令常用一整行的处理,二awk比较倾向于将一行分成多个字段然后再进行处理。
  • awk信息的读入也是逐行读取的,执行结果可以通过print功能将字段数据打印显示。
  • 在使用awk命令的过程中,可以使用逻辑操作符。(&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。)

二,awk的格式

格式1:awk [选项] '模式或条件{编辑指令}' 文件1 

格式2:awk -f 脚本文件 文件名

1,awk包含几个特殊的内建变量

内置变量 功能
NF 当前处理的行的字段个数(就是:有多少列)
NR 当前处理的行的行号(就是:有多少行
FNR 读取文件的记录数(行号),从1开始,新的文件重新从1开始计数
$0 当前处理的行的整行内容(就是:表示一行的内容)
$n 当前处理行的第n个字段(就是:第n列
FILENAME 被处理的文件名
FS 指定每行的字段分隔符,默认为空格或制表位(相当于选项 -F )
OFS 输出字段的分隔符,默认也是空格
RS 行分割符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录,而awk一次仅读取一条记录,预设值是“\n“
ORS 输出分割符,默认也是换行符

三,内置变量演示

 案例1:结合print进行输出,默认分隔符

shell三剑客-----awk命令_第1张图片

 shell三剑客-----awk命令_第2张图片

案例2:设定分割符号

shell三剑客-----awk命令_第3张图片

 shell三剑客-----awk命令_第4张图片

 用x作为分隔符

 显示一个空格,空格需要用双引号引起来,如果不用引号默认以变量看待,如果是常量就需要双引号引起来。

 shell三剑客-----awk命令_第5张图片

 逗号有空格效果

 shell三剑客-----awk命令_第6张图片

用制表符作为分隔符号

shell三剑客-----awk命令_第7张图片

定义多个分隔符,只要看到其中一个都算作分隔符

shell三剑客-----awk命令_第8张图片

2, awk常用内置变量

$1 代表第一列
$2 代表第二列以此类推
$0 代表整行
NF 一行的列数
NR 行数

 

 3,NF(多少列) 和[NR](所少行)的演示

NR:表示该处理的行序号是多少

NF:表示该处理的行,有多少列

案例1:打印每一行的列数

shell三剑客-----awk命令_第9张图片

案例2:显示行号

shell三剑客-----awk命令_第10张图片

 案例3:显示行号,并显示每一行的内容shell三剑客-----awk命令_第11张图片

 案例4:打印第二行,不加print也一样,默认就是打印

 

 案例5:打印第二行的第一列

shell三剑客-----awk命令_第12张图片

案例6:打印最后一列

shell三剑客-----awk命令_第13张图片

案例7:打印总行数 

 shell三剑客-----awk命令_第14张图片

 案例8:打印文件最后一行

 案例9:加上文字描述行数和列数

shell三剑客-----awk命令_第15张图片

 shell三剑客-----awk命令_第16张图片

 四,面试题

案例1:查看本机的ip地址多少,截取出来

shell三剑客-----awk命令_第17张图片

 

案例2:查看本机流量有多少字节

 

 案例3:查看根分区的可用量

shell三剑客-----awk命令_第18张图片

 五。BEGIN开始和END结尾

你可能感兴趣的:(shell,运维,linux,运维,服务器)