UNIT32 awk Operator

awk作为文本处理优秀工具之一,它有拥有丰富的运算符。awk运算符.表达式及功能与c语言基本相同。下面我们一起归纳总结一下所有运算符。

.字段引用

$ 字段引用

空格 字符串连接符

# gawk -F"[ :]" '{ print $1 }' list.txt   同时使用两个分隔符

.字段引用

x*y

x乘y

x+y

x加y

x%y

计算x/y的余数(求模)

x-y

x减y

x/y

x除y

x=y

将y的值赋给x

x**y

x的y次幂

x+=y

将x+y的值赋给x

x^y

x的y次幂

x-=y

将x-y的值赋给x

++y

y加1后使用y(前置加)

x*=y

x*y的值赋给x

y++

使用y值后加1(后缀加)

x^=y

将x^y的值赋给x

--y

y减1后使用y(前置减)

x/=y

将x/y的值赋给x

y--

使用后y减1(后缀减)

x%=y

将x%y的值赋给x

-y

负y;也称一目减

x**=y

将x**y的值赋给x

.awk赋值运算符

awk /^$/{print x = x + 1} example  统计出空行数

awk /^$/{print x +=  1} example    使代码更简洁

awk /^$/{print x++} example        使代码更简洁

= += -= *= /= %= ^= **=

a+=5; 等价于:a=a+5; 其它同类

AWK字段间做除法

#cat file

500,300

200,100

取第一个字段,然后第一行除以第二行,计算出百分比,怎么写?

#awk -F"," '{print $1}' file | awk 'BEGIN{FS="\n";RS="";OFS"\t"};{print $1/$2*100"%"}'

250%

#awk '{tot+=$2}{print $0} END{print "total point: "tot}' example

# ls -l | awk '/^[^d]/ {print $9"\t"$5} {tot+=$5} END {print "KB:" tot}

算述运算符举例:计算pay.txt中每个人的总额并格式化输出

2.逻辑运算符

|| 逻辑或

&& 逻辑与

$ awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}'

0 1

3.awk正则运算符

~ ~! 匹配正则表达式和不匹配正则表达式

$ awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}'

ok

#awk '$3 ~ /^d/ {print "ok"}'   example

4.awk关系运算符

< <= > >= != == 关系运算符

如:> < 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串 就会转换为字符串比较。两个都为数字 才转为数值比较。字符串按ascii码顺序比较。

$ awk 'BEGIN{a="11";if(a >= 9){print "ok";}}'

$ awk 'BEGIN{a=11;if(a >= 9){print "ok";}}' 

ok

#awk '$2 > 10   {print "ok"}'   example

查/etc/passwd中第3栏小于10的数据,且仅列账号与第3栏:

# awk -F":" '$3<10 {print $1 "\t " $3}' /etc/passwd

# awk 'BEGIN{FS=":"}$3<10 {print $1 "\t " $3}' /etc/passwd

5.算术运算符

+ - 加,减

* / & 乘,除与求余

+ - ! 一元加,减和逻辑非

^ *** 求幂

++ -- 增加或减少,作为前缀或后缀

说明,所有用作算术运算符 进行操作,操作数自动转为数值,所有非数值都变为0。

$ awk 'BEGIN{a="b";print a++,++a;}'

0 2

6.?: C条件表达式

?:

$ awk 'BEGIN{a="b";print a=="b"?"ok":"err";}'

ok

7.in 数组中是否存在某键值

in运算符, i判断数组中是否存在该键值。

$ awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print (a in arr);}'

0

$ awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}'

1

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值