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