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的值
awk的常见用法
最新推荐文章于 2025-03-14 14:10:51 发布