Awk 入门/运算
外观
< Awk 入门
Awk 的关系运算符已经讨论过了。作为快速提醒,以下是它们:
<
小于<=
小于或等于>
大于>=
大于或等于==
等于!=
不等于~
匹配(将字符串与正则表达式进行比较)!~
不匹配
请注意,与某些语言不同,Awk 中的关系表达式不返回任何值。它们只计算为真条件或假条件。这意味着像这样的 Awk 程序
BEGIN {a=1; print (a==1)}
它什么也不打印,尝试将关系表达式用作算术表达式的一部分会导致错误。
为了将关系运算符组合成更复杂的表达式,Awk 提供了三个逻辑(或布尔)运算符
&&
并且(如果两边都为真,则报告“真”)||
或者(如果其中一边或两边都为真,则报告“真”)!
非(反转以下表达式的真/假)
Awk 使用标准的四个算术运算符
+
加法-
减法*
乘法/
除法^
指数运算(**
也可能有效)%
余数
所有计算都在浮点中执行。它们以预期的运算顺序执行。
存在增量和减量运算符
++
增量--
减量
这些运算符相对于其操作的变量的位置很重要。如果++
在变量之前,则该变量在用于其他操作之前被增量。例如
BEGIN {x=3; print ++x}
这将打印 4。如果++
在变量之后,则该变量在用于其他操作之后被增量。例如
BEGIN {x=3; print x++}
这将打印 3,但从那时起x
将等于 4。类似的说明适用于--
。当然,如果被增量或减量的变量当时没有参与其他操作,则运算符的位置无关紧要。
Awk 还允许以下修改变量值的简写操作
x += 2 x = x + 2
x -= 2 x = x - 2
你明白了。这个快捷方式适用于所有算术运算(+= -= *= /= ^= %=
)。
只有一个独特的字符串操作:连接。通过将两个字符串连续放置在同一行上,可以轻松地将它们连接起来。它们之间只需要一个空格。例如
BEGIN {string = "Super" "power"; print string}
这将打印
Superpower
即使是变量,也可以将字符串连接起来。这会产生与上面相同的結果
BEGIN {a = "Super"; b = "power"; print (a b)}
括号可能不是必需的,但它们通常用于确保连接被正确解释。
有一个有趣的运算符叫做条件运算符。它有两个部分。看这个例子
print ( price > 500 ? "too expensive" : "cheap" )
这将根据price
的值打印“太贵了”或“便宜”。问号之前的条件将被计算。如果为真,则执行第一个语句,如果为假,则执行第二个语句。语句之间用冒号分隔。