awk
工作原理:
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个字段"然后再进行处理。avwk信息的读入也是逐 行读取的,执行结果可以通过print的功能将字数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符" &&"表示"与、"| |"表示"或" 、"."表示"非":还可以进行简单的数学运算,如+、- 、*、/、%、^分别表示加、减、乘、除、取余和乘方。
命令格式:
awk 选项 ' 模式或条件 {操作} ’文件1 文件2 …
awk -f 脚本文件 文件1 文件2 …
awk常见的内建变量(可直接用)如下所示:
FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF:当前处理的行的字段个数。
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列)。
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录, 而awk一次仅读入一条记录,以进行处理。预设值是'\n'
$0: 在shell主代码中代表的是脚本名
在函数体中代码的是函数名
在awk的命令的代表的是当前整行内容
awk ' BEGIN {操作1}; [条件] {操作2}; END {操作3}' 文件x
BEGIN {操作1} awk在读取文件之前执行的操作
[条件] {操作2} awk逐行读取文件时执行的操作
END {操作3} awk在处理完文件所有行之后执行的操作
awk的基础用法
打印奇数行;打印偶数行。(将行号除以2取余数,余1是奇数行,余0是偶数行)
字符串匹配显示含字符的行
BEGIN模式
awk ' BEGIN {操作1}; [条件] {操作2}; END {操作3}' 文件x
BEGIN {操作1} awk在读取文件之前执行的操作
[条件] {操作2} awk逐行读取文件时执行的操作
END {操作3} awk在处理完文件所有行之后执行的操作
按字段(列)输出内容
匹配主机空闲内存
过滤ens33 ip地址 mac地址 入站流量 出站流量
打印//etc/passwd用户名和uuid
指定数值匹配
!进行反取
使用if语句
使用if语句时,内部条件要加( ),外面要加{ }。
将{ }整条语句当作一个操作命令,相当于嵌套。
三元运算符
$n~"xxx" 实现包含某个字符段的效果
$n=="XXX" 代表的是指定字段为某个字符串
$n!="XXX" 代表的是指定字段不为某个字符串
通过管道符双引号调用shell命令
统计行数
输入内容到文件
算出当前内存的空闲率加上%
进程空闲率
日期时间
自动获取上一次开机时间