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