awk第三部分
awk操作符
实操
awk 'BEGIN{a=3;print a}' 赋值并打印
awk 'BEGIN{a=3;a+=2;print a}' 打印出a=5
awk 'BEGIN{a=3;a*=2;print a}' a=6
awk 'BEGIN{a=3;a/=2;print a}' a=1.5
awk 'BEGIN{a=3;b=4; a>b?b=a:a=b;print a,b}'
awk 'BEGIN{a=3;print a++;print ++a}'
awk 'BEGIN{a=3;print --a;print a--;print --a}'
内置的字符串函数
实操
awk 'gsub("good","GOOD"){print $0}' test 将小写good替换成大写GOOD
awk 'gsub("a","A",$2){print $0}' test 将第二个域中的小写a替换成大写A
awk '{print index($0,"good"),$0}' test 打印good出现的字符位置和行内容
awk '{print length($0),NF,NR,$0}' test 返回长度
awk 'BEGIN{print split("0411-8888-666",aa,"-");print aa[1],aa[2],aa[3]}'
cat -n llvar
awk '{print sub("2","9"),$0}' llvar 将2替换成9
awk '{print substr($0,1,5)}' test 取每一行从第一个到第五个符
sprintf:返回经fmt格式化后的exp
实操
awk 'BEGIN{print spritf("%10.4f"3.1415926)}'
awk 'BEGIN{print sprintf("%8d%8i",123,4567)}' 右对齐
awk 'BEGIN{print sprintf("%-8d%8i",123,4567)}' 左对齐
awk内置数值函数
实操
awk 'BEGIN{a=9;print a/2;print int(a/2)}' int取整
awk 'BEGIN{print exp(2)}'
awk 'BEGIN{print sqrt(2)/2}'
awk 'BEGIN{print sin(0.785398);print cos(0.785398)}'
awk 'BEGIN{print atan2(1,1)}'
awk 'BEGIN{print rand()}' 随机数
cat llvar
awk '{$10=$5-$2;print $10;total+=$2}END{print total}' llvar
实操
awk '{gsub("is","IS");print $0}' test > testawk
cat -n testawk
diff test testawk
cmp test testawk