63. 一元运算符


接受单个操作数的运算符称为一元运算符。

操作符 描述
+ 数字(返回数字本身)
- 对数字求反
++ 自动递增
-- 自动递减

以下示例使用一元运算符-对数字求反:

$ awk -F, '{print -$4}' employee-sal.txt
-10000
-5000
-4500
-4500
-3000

以下示例演示了+-一元运算符如何影响存储在文本文件中的负数:

$ vi negative.txt
-1
-2
-3

$ awk '{print +$1}' negative.txt
-1
-2
-3

$ awk '{print -$1}' negative.txt
1
2
3

自动递增和自动递减运算符更改关联变量的值,当在表达式中使用时,它们的解释值可以是值更改的 Pre(前) 或 Post(后)。

  • Pre:表示您将在变量名称前添加++(或--)。 这将首先将变量的值增加(或减少)1,然后执行使用该变量的语句的其余部分。

  • Post:意味着您将在变量名称后添加++(或--)。 这将首先执行包含语句,然后将变量的值增加(或减少)1。

$ awk -F, '{print ++$4}' employee-sal.txt
10001
5001
4501
4501
3001
$ awk -F, '{print --$4}' employee-sal.txt
9999
4999
4499
4499
2999

由于++在打印语句中,因此打印原始值

$ awk -F ',' '{print $4++}' employee-sal.txt
10000
5000
4500
4500
3000 

由于++在单独的语句中,因此打印结果值

$ awk -F ',' '{$4++; print $4}' employee-sal.txt
10001
5001
4501
4501
3001

由于--在打印语句中,因此打印原始值

$ awk -F ',' '{print $4--}' employee-sal.txt
10000
5000
4500
4500
3000

由于--在单独的语句中,因此打印结果值

$ awk -F ',' '{$4--; print $4}' employee-sal.txt
9999
4999
4499
4499
2999

以下有用的示例显示拥有登录 shell 的用户总数,即可以登录系统并进入命令提示符的用户总数。

  • 这使用了后置递增一元运算符(尽管因为直到 END 块预递增才会产生相同的结果,才会打印变量)。
  • 该脚本的主体块包含一个模式匹配,以便仅当该行的最后一个字段包含模式/bin/bash时才执行所包含的代码。
  • 注意:正则表达式应括在//之间,但这意味着必须在正则表达式中转义斜杠(/) 字符,以便它不会被解释为表达式结束。
  • 当一行匹配时,变量 “n” 加一。 最终值从 END 块打印。
$ awk -F ':' '$NF ~ /\/bin\/bash/ { n++ }; END { print n }' /etc/passwd
2