awk
概述:AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描、过滤、统计汇总工作数据
可以来自标准输入也可以是管道或文件。
20世纪70年代诞生于贝尔实验室,现在centos7用的是gawk,之所以叫 AwK是因为其取了三位创 始人Alfred Aho,Peter Weinberger,和 Brian Kernighan 的 Family Mame的首字符。
工作原理: 当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出,如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量 中,并按模式或者条件执行编辑命令。
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个"“字段"然后再进行处理。awk信 息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程 中,可以使用逻辑操作符”&“表示"与”、"||表示"或"、"!“表示非”;还可以进行简单的数学运算,如H+、 一、*、/、%、^分别表示加、减、乘、除、取余和乘方。
命令格式: awk选项’模式或条件{操作}‘文件1文件2 … awk -f 脚本文件 文件1 文件2 …
格式: awk关键字选项 命令部分’{xxxx} ‘文件名 awk内置变量 FS:指定每行文本的字段分隔符,缺省为空格或制表位 NF:当前处理的行的字段个数 NR:当前处理的行的行号(序数)
$0:当前处理的行的整行内容
$n:当前处理行的第n个字段(第n列) FILENAME:被处理的文件名
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅 读入一条记录,以进行处理。预设值是’’\n’’
简说:数据记录分隔,默认为\n,即每行为一条记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
$1 $2中间没有,输出结果是没有空格的
逗号有空格效果 显示一个空格,空格需要用双引号引起来,如果不用引号默认以变量看待,如果是常量就需要双引
号引起来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逐行执行开始之前执行什么任务,结束之后再执行什么任务,用BEGIN、END
BEGIN一般用来做初始化操作,仅在读取数据记录之前执行一次 END一般用来做汇总操作,仅在读取完数据记录之后执行一次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其他内置变量的用法:
FS:打印之前定义字段分隔符 OFS:定义输出时以什么分隔
FNR:有多个文件时,FNR可以将每个文件的行号分开显示,不会追加到一起(NR会追加在一起) RS:定义一个换行符,遇到该符号时则换行
ORS:定义一个分隔符,将多行合成为一行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
awk高级用法:
-v:直接调用 getline:读取一行数据时得到的不是当前行而是当前行的下一行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
if语句: awk的if语句也分为单分支、双分支和多分支
单分支为if ( ) { }
双分支为if() { }else{ }
多分支为if( ) { }else if() { }else { }
在这里插入图片描述
在这里插入图片描述
awk还支持for循环、 while循环、函数、数组等 开始模式下定义x初始值为0,判断条件为以/bin/bash结尾的,查看/etc/passwd文件,一行行判断是否满足条件,满足则x+1,且输出信息,不满足跳过,最后结束模式输出当前x的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐