shell文本编辑器:awk用法

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。

awk语法格式:

awk 命令 '{执行语句}' 文件名

awk 命令 '/正则/{执行语句}' 文件名

awk常用命令:

-F: 指定分隔符。不写就是以一个或多个空格为分隔符。

-v var=value   赋值一个用户定义变量,将外部变量传递给awk

读前处理和读后处理。

BEGIN语句块: 在awk开始从输入流中读取行之前被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。 

END语句块:   在awk从输入流中读取完所有的行之后即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。

awk内置变量:

$n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。

$0 这个变量包含执行过程中当前行的文本内容。

NF 表示字段数,在执行过程中对应于当前的字段数。

NR 表示记录数,在执行过程中对应于当前的行号。

awk运算和判断。

+ -	                    加,减 
* / &	            乘,除与求余 
+ - 	            一元加,减
^ ***	            求幂 
++ --	            增加或减少,作为前缀或后缀
= += -=                 赋值语句
||	                    逻辑或 
&&	                    逻辑与
!                       逻辑非 
< <= > >= != ==         关系运算符

awk小例子:

1、

test文件内容为:

root:123:234:345:666

#awd -F: {print $1,$3} test

root 234

表示:以:分割,$1表示分割后的第一部分,同理$3表示第三部分。

2、

#awk -F: 'NR==1{print $1,NR}' test

root 1

NR==1表示只定位第一行,后面输出语句,输出第一部分和行数。

3、

读前处理:
#awk -F: 'BEGIN {print NR,NF}' /etc/passwd
0 0

读后处理:
#awk -F: 'END {print NR,NF}' /etc/passwd
46 7
原文地址:https://www.cnblogs.com/G-YUE/p/6607202.html