曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3826|回复: 0
打印 上一主题 下一主题

运算符

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-2-25 11:35:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
和 C 语言一样,awk 也有运算符,且分两种,一种是单目运算符,一种是双目运算符。

单目运算符

运算符描述
+
-
++ 自增
-- 自减


双目运算符中的数学运算符:
运算符 描述
+
-
*
/
% 求模

双目运算符中的赋值运算符:
运算符描述
= 直接赋值
+= 加后赋值
-= 减后赋值
*= 乘后赋值
/= 除后赋值
%= 求模后赋值

双目运算符中的条件运算符:
运算符描述
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等
&&
||

正则表达式运算符:
运算符描述
~ 匹配成功
!~不匹配

下面是几个实例:

1. 计算 /etc/passwd 文件中所有域的个数
$ awk -F ':' '{total += NF}; END {print total}' /etc/passwd
287

2. 从 /etc/passwd 里计算出有多少用户使用的是 /bin/bash
$ awk -F ':' '$NF ~ /\/bin\/bash/ {total++;} END {print total}' /etc/passwd
3
当然这里只是演示了 awk 的用法,获取方法还有很多,比如:
$ cat /etc/passwd |grep /bin/bash |wc -l

3. 从 /etc/passwd 里找出 UID 值最大的用户
$ awk -F ':' '$3 > max { max = $3; maxline = $0; } END  {print max, maxline}' /etc/passwd
65534 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

4. 列出 /etc/passwd 里行号为偶数的行并打印出该行及其行号
$ awk 'NR % 2 == 0 {print NR,$0}' /etc/passwd
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
8 halt:x:7:0:halt:/sbin:/sbin/halt
... ...36 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
38 tcpdump:x:72:72::/:/sbin/nologin
40 mockbuild:x:501:501::/home/mockbuild:/bin/bash

5. 列出 /etc/passwd 里 UID 和 GID 相等的行
$ awk -F ':' '$3 == $4' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
... ...
mockbuild:x:501:501::/home/mockbuild:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin

6. 找出 /etc/passwd 中 UID 大于 300 且在用 /bin/bash 的用户记录
$ awk -F ':' '$3 >= 300 && $NF ~ /\/bin\/bash/' /etc/passwd
beyes:x:500:500:beyes:/home/beyes:/bin/bash
mockbuild:x:501:501::/home/mockbuild:/bin/bash

7. 列出 /etc/passwd 中没有注释信息(第 5 列)的用户信息
$ awk -F ':' '$5 == "" ' /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
mockbuild:x:501:501::/home/mockbuild:/bin/bash
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 02:39 , Processed in 0.115851 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表