文本三剑客之awk

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、awk概述

1.概述

awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。
以空格做为分隔符,多个空格他会自动压缩成一个

2.作用

(1)按照命令找指定行

(2)对找到的行打印或其他操作,awk默认打印

(3)可以在无交互的情况下(不用进入真正的文件)实现相当复杂的文本操作,用于 Shell 脚本,完成各种自动化配置任务。

3.awk的工作过程

(1)先看BEGIN{action;… }这个模块是读取操作,读文件的所有行,所有读取完毕,然后一次执行

(2)END{action;… }打印,输出结果,对前面的结果条件判断,还可以用代码接着操作

4.awk的基本操作及其内置变量

4.1 awk的-F操作

“分隔符” 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符

4.2 awk的-v操作

var=value 变量赋值

注:一定是单引号:‘模式或条件 {操作}’

{ }外指定条件,{ }内指定操作。

用逗号指定连续的行,用 || 指定不连续的行。&&表示”且“。
awk {print $1,$2,$3}

4.3 内置变量

不能用双引号括起来,不然系统会把它当成字符串。
文本三剑客之awk_第1张图片

二、awk打印

1.打印用法

awk ‘{print}’ 文件名
文本三剑客之awk_第2张图片
0和1放置{ }前,能够起到限制打印内容的作用(默认为"1"),如果为0,就不打印内容
文本三剑客之awk_第3张图片
awk ‘{print $0}’ test1.txt ----$0,代表整行内容;awk是逐行读取处理,配合$0,就是打印所有内容
$1只取第一列,可以对行切片,输出列
文本三剑客之awk_第4张图片
对/etc/passwd 取第一列和第四列
文本三剑客之awk_第5张图片

2.对行来进行操作

文本三剑客之awk_第6张图片只打印第三行
在这里插入图片描述
打印第三行到第五行

在这里插入图片描述
打印第三行到第五行
文本三剑客之awk_第7张图片

3.奇偶打印

文本三剑客之awk_第8张图片

4.awk运算

文本三剑客之awk_第9张图片

三、getline

1.无重定向符时

当getline左右无重定向符号(“<”,“>”)或者管道符号(“|”)时,
awk首先读取的是第一行,而getline获取的是光标跳转至下一行的内容(也就是第二行)
文本三剑客之awk_第10张图片
文本三剑客之awk_第11张图片

2.左右有管道符号或重定向符时

getline则作用定向输入文件,由于文件是刚打开,并没有被awk读入一行,
而只是getline读入,所以getline返回的是文件的第一行,而不是跳转至一行输入

原因:getline运行之后awk会改变NF,NR,$0,FNR等内部变量,所以此时读取$0的行号不再为1,而是2
文本三剑客之awk_第12张图片
管道符 “|”
在这里插入图片描述

四、文件内容匹配过滤打印

1.以什么为开头或者结尾打印

文本三剑客之awk_第13张图片
在这里插入图片描述

2.BEGIN END 模式

格式:awk ‘BEGIN{…};{…};END{…}’ 文件
处理过程:
1、在awk处理指定的文本之前,需要先执行BEGIN{…}模式里的命令操作
2、中间的{…} 是真正用于处理文件的命令操作
3、在awk处理完文件后才会执行END{…}模式里的命令操作。END{ }语句块中,往往会放入打印结果等语句。
文本三剑客之awk_第14张图片

3.对文本内容行来进行处理

在这里插入图片描述
文本三剑客之awk_第15张图片

4.RS行分隔符

文本三剑客之awk_第16张图片

5.awk的条件判断打印

文本三剑客之awk_第17张图片
文本三剑客之awk_第18张图片

6.awk的三元表达式

在这里插入图片描述
文本三剑客之awk_第19张图片
文本三剑客之awk_第20张图片
文本三剑客之awk_第21张图片

五、awk的精确筛选

1.常用选项

文本三剑客之awk_第22张图片
文本三剑客之awk_第23张图片

2.多条件指定打印

文本三剑客之awk_第24张图片定义数组打印
在这里插入图片描述
遍历数组
在这里插入图片描述
awk 去重
文本三剑客之awk_第25张图片

3.拓展练习

1 www.kgc.com
2 mail.kgc.com
3 ftp.kgc.com
4 linux.kgc.com
5 blog.kgc.com
截取主机名
文本三剑客之awk_第26张图片

你可能感兴趣的:(运维)