23 - awk条件判断
2022-04-03 本文已影响0人
舍是境界
条件判断概述
- 输出所有行还是输出部分行
- 如何限制仅输出部分行的数据内容
- 如何设置多个条件
- 基本语法
- awk '[条件]{指令}' 文件...
- 条件表达式
- 正则表达式
- 数值/字符比较
- 逻辑比较
- 正则
- /正则表达式/
- 匹配,!不匹配
$ awk -F: '/^ro/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ awk -F: '$7!~/bash$/{print $1,$7}' /etc/passwd
- 数值、字符串比较
- == 等于、!= 不等于
- > 大于、>= 大于或等于
- < 小于、<= 小于或等于
$ awk 'NR==2{print}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
$ awk -F: '$7!="/bin/bash"' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
$ awk -F: '$3>=1000{print $1}' /etc/passwd
caowg
- 逻辑与比较测试
- &&逻辑与
- ||逻辑或
$ awk -F: '$3>=0&&$3<2{print $1,$3}' /etc/passwd
root 0
bin 1
$ awk -F: '$3==1||$3==7{print $1,$3}' /etc/passwd
bin 1
halt 7
- 运算符
- +,-,*,/,%
- ++,--,+=,-+,*=,/=
$ awk 'NR%2==1{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
$ seq 200 | awk 'BEGIN{i=0} ($0%3==0)&&($0%13==0){i++} END{print i}'
5
小结
- 本文我们学习了awk的条件判断
- 正则表达式
- 数值/字符比较练习
- 逻辑处理联系