跳转到内容

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的值打印“太贵了”或“便宜”。问号之前的条件将被计算。如果为真,则执行第一个语句,如果为假,则执行第二个语句。语句之间用冒号分隔。

华夏公益教科书