(14)awk布尔值、比较和逻辑运算
作者:互联网
awk布尔值
在awk中,没有像其它语言一样专门提供true、false这样的关键字。
但它的布尔值逻辑非常简单:
- 数值0表示布尔假
- 空字符串表示布尔假
- 其余所有均为布尔真
- 字符串"0"也是真,因为它是字符串
- awk中,正则匹配也有返回值,匹配成功则返回1,匹配失败则返回0
- awk中,所有的布尔运算也有返回值,布尔真返回值1,布尔假返回值为0
[root@docker-01 ~]# awk ' > BEGIN{ > if(1){print "haha"} > if("0"){print "hehe"} > if(a=3){print "hoho"} # if(3){print "hoho"} > if(a==3){print "aoao"} > if(/root/){print "heihei"} # $0 ~ /root/ > }' haha hehe hoho aoao [root@docker-01 ~]# awk 'BEGIN{if(1){print "haha"}}' haha [root@docker-01 ~]# awk 'BEGIN{if(/root/){print "heihei"}}'
awk中比较操作
strnum类型
awk最基本的数据类型只有string和number(gawk 4.2.0版本之后支持正则表达式类型)。但是,对于用户输入数据(例如从文件中读取的各个字段值),它们理应属于string类型,但有时候它们看上去可能像是数值(例如$2=37
),而有时候有需要这些值是数值类型。
awk的数据来源:
- awk内部产生的,包括变量的赋值、表达式或函数的返回值。
- 从其它来源获取到的数据,都是外部数据,也是用户输入数据,这些数据理应全部都是string类型的数据。
所以POSIX定义了一个名为"numeric string"的"墙头草"类型,gawk中则称为strnum类型。当获取到的用户数据看上去是数字时,那么它就是strnum类型。strnum类型在被使用时会被当作数值类型。
注意,strnum类型只针对于awk中除数值常量、字符串常量、表达式计算结果外的数据。例如从文件中读取的字段$1
、$2
、ARGV数组中的元素等等。
[root@docker-01 ~]# echo "30" | awk '{print typeof($0) " " typeof($1)}' strnum strnum [root@docker-01 ~]# echo "+30" | awk '{print typeof($1)}' strnum [root@docker-01 ~]# echo "30a" | awk '{print typeof($1)}' string [root@docker-01 ~]# echo "30 a" | awk '{print typeof($0) " " typeof($1)}' string strnum [root@docker-01 ~]# echo " +30 " | awk '{print typeof($0) " " typeof($1)}' strnum strnum
标签:逻辑运算,布尔值,01,awk,typeof,print,strnum,root 来源: https://www.cnblogs.com/liujunjun/p/12397661.html