1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| * 语法 if(条件) { 语句1; 语句2; ... }
[root@bogon ~]# awk '{if(NR == 1){print $0}}' test abc 345 ssd asdf lkj;l # 一定要将动作写在{}中,控制语句也要有{},所以这里有两个{},if语句中的大括号中,也可以执行多个动作。将行号是1的行打印出来。 [root@bogon ~]# awk '{if(NR == 1){print $1;print $2}}' test abc 345 # 如果行号是1,就打印第一列再打印第二列 [root@bogon ~]# awk '{if(NR == 1)print $1}' test abc # 如果if后的动作只有一个,那么也可以不写{}
* 语法 "if...else..."的语法如下: if(条件) { 语句1; 语句2; ... } else { 语句1; 语句2; ... }
"if...else if...else"的语法如下: if(条件1) { 语句1; 语句2; ... } else if(条件2) { 语句1; 语句2; ... } else { 语句1; 语句2; ... }
[root@bogon ~]# awk -F":" '{if($3 < 1000){print $1,"系统用户"}else{print $1,"普通用户"}}' /etc/passwd root 系统用户 bin 系统用户 daemon 系统用户 adm 系统用户 lp 系统用户 sync 系统用户 shutdown 系统用户 halt 系统用户 mail 系统用户 operator 系统用户 games 系统用户 ftp 系统用户 nobody 系统用户 systemd-network 系统用户 dbus 系统用户 polkitd 系统用户 postfix 系统用户 sshd 系统用户 openvpn 系统用户 ruopu 普通用户 # 对/etc/passwd文件中的用户做判断,用户ID小于1000的为系统用户,否则就是普通用户
[root@bogon ~]# cat test7 姓名 年龄 aaa 18 bbb 66 ccc 36 [root@bogon ~]# awk 'NR !=1{if($2<=30){print $1,"年轻人"}else if($2>=30 && $2<=50){print $1,"中年人"}else{print $1,"老年人"}}' test7 aaa 年轻人 bbb 老年人 ccc 中年人 # 首先忽略第一行,然后判断文件中第二列的年龄,最后打印出结果
|