一.awk语法格式
awk是一个文本处理工具,通常用于处理数据并生成结果报告
工作模式:begin-->逐行(或者按某种匹配模式)处理文本-->end
语法格式:
- awk 'BEGIN{}pattern{commands}END{}' file_name
- standard output | awk 'BEGIN{}pattern{commands}END{}'
BEGIN{}:正式处理数据之前执行的程序
pattern:匹配模式
{commands}:处理命令,可能多行
END{}:处理完所有匹配数据后执行的程序
二.awk的内置变量
$0-整行内容
$1-n 按某种分隔符分割后的第i个字段
NF 按某种分隔符分割的字段个数
NR 当前行的行号,从1开始计数
FNR 多文件处理时,每个文件行号单独计数,都是从0开始
FS 输入字段分隔符
RS 输入行分隔符,默认回车换行
OFS 输出字段分隔符,默认为空格
ORS 输出行分隔符,默认回车换行
FILENAME 当前输入的文件名字
ARGC 命令行参数个数
ARGV 命令行参数数组
三.awk的模式匹配
1.awk只会对符合某种模式的行进行处理
- RegExp:按正则表达式匹配
- 关系运算:按关系运算匹配
2.RegExp
匹配文件file中含有root字符串的所有行
awk 'BEGIN{FS=":"}/root/{print $0}' file
匹配文件file中以yarn开头的所有行
awk 'BEGIN{FS=':'}/^yarn/{print $0} file'
3.关系运算符匹配
<
>
<=
>=
==
!=
~ 匹配正则表达式
!~ 不匹配正则表达式
|| 或
&& 与
! 非
以:为分隔符,匹配文件file中第3个字段小于50的所有行信息
awk 'BEGIN{FS=":"}$3>50{print $0}' file
以:为分隔符,匹配文件file中第7个字段为target的所有行信息
awk 'BEGIN{FS=":"}$7=="target"{print $0}' file
以:为分隔符,匹配文件file中第1个字段包含hdfs或yarn的所有行信息
awk 'BEGIN{FS=":"}$1=="hdfs" || $1=="yarn"{print $0}' file
三.awk的模式匹配