⑴awk ’BEGIN {FS=“:”; print FILENAME} {print FILENAME}‘ /etc/passwd #FILENAME,$-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。
⑵h.获得linux环境变量(ENVIRON
⑶awk ’BEGIN {print ENVIRON[“PATH”];}‘ /etc/passwd #ENVIRON是子典型数组,可以通过对应键值获得它的值。
⑷i.输出数据格式设置(OFMT
⑸awk ’BEGIN {OFMT=“%.f”; print /,.;}‘ /etc/passwd #OFMT默认输出格式是:%.g 保留六位小数,这里修改OFMT会修改默认数据输出格式
⑹j.按宽度指定分隔符
⑺echo | awk ’BEGIN {FIELDWIDTHS=“ ”} {print $“-”$“-”$,$“:”$“:”$}‘ #FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS=“ ”就表示$宽度是,$是,$是 。。.。 。这个时候会忽略:FS分隔符
⑻k.RSTART RLENGTH
⑼awk ’BEGIN{start=match(“this is a test”,/[a-z]+$/; print start, RSTART, RLENGTH }‘
⑽awk ’BEGIN{start=match(“this is a test”,/^[a-z]+$/; print start, RSTART, RLENGTH }‘ #RSTART被匹配正则表达式首位置,RLENGTH匹配字符长度,没有找到为-.
⑾a.获取普通的外部变量
⑿test=’awk code‘
⒀echo | awk ’{print test}‘ test=“$test”
⒁echo | wawk ’BEGIN {print test}‘ test=“$test” #传入的变量可以在action中获取值,但是变量名与值放到’{action}‘后边。其中BEGIN的action是不能获得
⒂b.BEGIN程序块的变量
⒃test=’awk code‘
⒄echo | awk -v test=“$test” ’BEGIN {print test}‘
⒅echo | awk -v test=“$test” ’{print test}‘ #用-v 传入变量可以在中类型的action 中都可以获得到,但顺序在 action前面
⒆c.获得环境变量
⒇awk ’BEGIN {for (i in ENVIRON {print i“=”ENVIRON[i];}}‘
⒈a.赋值运算符、算术运算
⒉echo | awk ’BEGIN {a=; b=; c=} {a+=; b++; c--} END {print a, b, c, a*b}‘
⒊awk ’BEGIN {a=; b=; print (a》 && b《=,(a》 || b《=;}‘
⒋awk ’BEGIN{a=“”;if(a 》= {print “ok”;}}‘ #》 《 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串 就会转换为字符串比较。两个都为数字 才转为数值比较。字符串比较:按照ascii码顺序比较
⒌awk ’BEGIN {a=“b”; print a==“b” ? “ok” : “err”;}‘ #三目运算
⒍awk ’BEGIN {a=“b”; arr[]=“b”; arr[]=“c”; print (a in arr;}‘ #判断数组中是否存在该键值
⒎a.字符串转数字
⒏awk ’BEGIN {a=“”; b=“test”; print (a+b+;}‘
⒐awk ’BEGIN {a=“”; b=“test”; print a+b+;}‘
⒑b.数字转字符串
⒒awk ’BEGIN {a=; b=; c=(a“”b; print c}‘
⒓awk ’BEGIN {a=; b=; c=a“”b; print c}‘
⒔awk ’BEGIN {a=“a”; b=“b”; c=a“”b; print c}‘
⒕awk ’BEGIN {tB[“a”]=“a”; tB[“b”]=;}‘
⒖b.数组长度(length
⒗awk ’BEGIN {tB[“a”]=“a”; tB[“b”]=; print length(tB}‘
⒘awk ’BEGIN {info=“it is a test”; split(info,tA,“ ”; print asort(tA;}‘ #asort对数组进行排序,返回数组长度