awk命令使用

#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")}'
 


版权声明:本文为tianyouyexin原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。