awk

来源:互联网 发布:淘宝密码格式 编辑:程序博客网 时间:2024/05/16 09:30

awk编程模型
awk编程模型

调用方法
与sed类似。

awk 'awk语句' inputfileawk -f 'awk命令文件' inputfile./awk命令文件 inputfile

awk语句由 /pattern/action组成

awk '/^$/{print "this is a blank line."}' inputfile

记录和域
行为记录,行中用空格/tab隔开的部分为域。
awk用$符号定义域,$1表示第一个域。

awk '{print $1 $2 $3 $4}' inputfileawk '{print $0}' inputfile #打印全部域awk 'BEGIN{one=1;two=2}{print $(one+two)} inputfile #打印第1+2=3个域

awk用-F选项修改域分隔符
或者用FS环境变量修改分隔符

awk -F "\t" '{print $3;}' inputfileawk 'BEGIN{FS="\t"}{print $3;}' inputfileawk 'BEGIN{FS="\t+"}{print $3;}' inputfile

awk关系/bool运算符

运算符 意义 > >= < <= 大于 … … || && ! 逻辑运算 == != 相等/不等 ~ !~ 匹配/不匹配
awk 'BEGIN{FS="\t"} $1~/root/' inputfileawk 'BEGIN{FS=":"} if($3<$4 && $1>0) print $0;' inputfile

表达式

x=1y="sss"z="ddd" "dgb" #z="ddd dgb"
运算符 意义 +-*/% 加减乘除余 ^或** 乘方 ++x和x++ 自增
#!/bin/awk -fBEGIN{FS=","}{total=$2+$3+$4+$5avg=total/5print $1,avg}

系统变量

这里写图片描述
这里写图片描述

格式化输出
printf,语法与C语言类似。

这里写图片描述

awk BEGIN{FS=","}{printf("%d %s", $1, $3);} inputfileawk BEGIN{FS=","}{printf("%10.3f %-12s", $1, $3);} inputfile #长度10位小数点3位/12位字符串左对齐不足补上空格

内置字符串函数

这里写图片描述

流程控制

if(a==b) print $1;while()dowhile()for(;;)

数组
awk中为关联数组

b[10.5]=6for(a in b) print b[a];if("10.5" in b) print b[10.5];

split函数

split("aa/bb/cc", arr, "/"); #将aa/bb/cc以/为分隔符,分割到数组arr中split($1, arr, " ");BEGIN{    for(x=0;x<ARGC;x++)    print ARGV[x]}
0 0
原创粉丝点击