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

posted @ 2017-03-23 20:45  高跃  阅读(1226)  评论(0)    收藏  举报