#linux awk command info
awk是一个行编辑器 和sed是互补关系 主要功能是截取,它类似于cut的功能,但是功能更强大
不单可以截取还可以运算 排序 还支持shell语句等一些功能
awk语法
awk [option]'{program}'[filename]
awk 认为每一行都是一条记录,记录与记录的默认分割符是回车
每一列是一个字段,字段与字段的默认分割符是空
awk 认为 每一条awk语句就是一个脚本 所以程序脚本要用{}定义,由于awk命令行假定脚本是单文本字符串,所以必须将程序脚本包括在单引号内。
#awk截取
#nf number field 列截取
print 输出
$0 文本全部
$1-$n 输出第几个字段
$NF 输出最后一个字段
#行截取 nr number row
如:awk 'NR==2{print $0}' file
更改程序处理的优先级 BEGIN END 假如有多个程序
awk 数据字段和记录变量
FS 指定输入字段的分割符 类似于命令选项 -F
OFS 指定输出字段分割符
RS 指定输入记录分割符
ORS 指定输出记录的分割符
FIELDWIDTHS 按宽度分割字段
如:awk 'BEGIN{FIELDWIDTHS="3 4 5 6"}{print $1,$2,$3,$4}'
awk 运算
+ - * / ^ % 赋值
如:awk 'BEGIN{a=1;b=2;c=a+b;print c}'
如:计算内存使用率:
awk 'NR==1{t=$2}NR==2{f=$2;print (t-f)*100/t}' /proc/meminfo
比较运算
> < >= <= == != 数字
对于字符串
==精确匹配
~ 模糊匹配
!~
#awk 函数 if for while do-while
调用linux系统命令:
格式:awk 'BEGIN{system("linux命令")}'
打印时间: awk 'BEGIN{system("date")}'