awk(2) awk 中的指令

awk的指令:
expression ( function calls, assignments..)
print expression-list
printf( format, expression-list)
if( expression ) statement [else statement]
while( expression ) statement
do statement while( expression)
for( expression; expression; expression) statement
for( variable in array) statement
delete
break
continue
next
exit [expression]
statement


示例:
1)、if...else...
awk脚本
awk 'BEGIN{
    num=ARGV[1]
    if(num>3){
        print "num larget 3"
    }else if(num<3){
        print "num less 3"
    }else{
        print "num eq 3"
    }
}' $*


2)、while
示例:递减输出
awk '
BEGIN{
    num=ARGV[1]
    while(num>0){
        print num
        num--
    }
}
' $* 


3)、do...while
示例:递减输出
awk '
BEGIN{
    num=ARGV[1]
    do {
        print num
        num--
    }while(num>0)


}
' $*
注: 和while 区别是,do..while 先执行一遍,再判断条件。


4)、for
数组
awk '
BEGIN{
    arr[1]=1;arr["test"]="test";arr[6]=6
    for(a in arr){
        print a"="arr[a]
    }
}
' $* 


for( expression1; expression2; expression3) statement
awk '
BEGIN{
    sum=0
    for(i=1;i<=100;i++){
       sum+=i
    }
    print sum
}
' $*


5)、break
for、while、do..while 跳出循环


6)、continue
for、while、do..while 中出现continue ,则之后的命令不再执行,直接进入到下一次循环


7)、next 
当执行next 指令时,awk 将忽略其后的所有awk指令(包括其后所有的 条件{指令}),直接读取下一行数据继续从第一个 条件{指令}开始执行
如:$1~/^a/{... next} {...}
当以a 开关的行时,跳过执行所有的指令。next 前的指令仍会执行的。


8)、exit 即退出awk 程序


9)、print ,printf
printf 格式输出,也可以输出到文件
print 输出字符串,或者变量。如:print "id",id     字符串和变量使用逗号分割,打印出时使用OFS 变量分开,此变量默认是空格


10)、close
关闭开启的文件或者pipe


11)、system
执行shell 上的指令。
如:awk 'BEGIN{file="test.log" system("rm" file)}'
删除test.log 文件


12)、|  可以在shell 和awk 之间传递数据。参考getline 


13)、delete   删除数组中的某个值
for( any in X_arr ){
    if(any=="test"){
   delete X_arr[any]    #一次只删除一个值
}
}


14)、+, -, *, /, %, ^指数,与C 语言用法一致。
=,+=,-=,*=,/=,%=,^= ,++,--
x+=5 的意思就是  x=x+5


15)、三元运算
条件?value1:value2


16)、逻辑运算 &&  ||  ! 


17)、关系运算符

>,>=,<,<=,!=,!


猜你喜欢

转载自blog.csdn.net/convict_eva/article/details/74988695
awk
今日推荐