概述
一个强大的文本分析工具命令,把文件逐行的读入然后执行相应的命令,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理,通常用来格式化文本文件中的信息.主要涉及的概念有记录(行)、域(列)、域分隔符

1.BEGIN{}模块
在awk处理任何输入文件之前执行
2.END{}模块
在整个输入文件处理完成后被执行
命令格式
awk '{pattern + action}' file1,file2...
pattern 表示 AWK 在数据中查找的内容
action是在找到匹配内容时所执行的一系列命令
内置变量
$n 第几列
$0 代表所有列
$NF 表示最后一列
NF 当前记录中的字段数
NR 当前记录数
FNR 同NR,但相对于当前文件
FILENAME 当前文件名
FS 输入域分隔符(默认是任何空格)
OFS 输出域分隔符(默认值是一个空格)
ORS 输出记录分隔符(默认值是一个换行符)
命令示例
1. 打印行号,每行列数,所有列
cat a.c |awk -F' ' '{print FNR,NF,$0}'
2. 打印以tom或kevin开头的行
awk '/^(tom|kevin)/ {print $0}' a.c
3. 打印第一列是tom的行
awk '{if($1=="tom"){print $0}}' a.c
4. 三元条件判断
awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' a.c
5. 查看指定某些目录内文件总字节数
ls -l $(find /etc/ -maxdepth 3) |awk 'BEGIN {size=0;} {if($5!=4096){size=size+$5;}} END{print "[end]size is
版权声明:本文为weixin_42470362原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。