资讯详情

Shell awk 条件判断

条件判断概述

输出所有行还是输出部分行? 如何限制只输出部分行的数据内容? 多个条件如何设置? 基本语法

awk [选项] 条件 文件.. .. 条件表达式

正则表达式 数值/字符比较 逻辑比较(& ,||) 正则 /正则表达式/ ~匹配, !~不匹配 [root@zabbix-server ~]# awk -F: '/^ro/{print}' /etc/passwd root:x:0:0:root:/root:/bin/bash #过滤出第7列bash打印出最后一行 [root@zabbix-server ~]# awk -F: '$7!~/bash$/{print $1,$7}' /etc/passwd bin /sbin/nologin daemon /sbin/nologin adm /sbin/nologin lp /sbin/nologin 字串比较值

==等于,!=不等于 >大于,>=大于或等于 <小于,<=小于或等于 [root@zabbix-server ~]# awk 'NR==2{print}' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin [root@zabbix-server ~]# awk -F: '$7!="/bin/bash"' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@zabbix-server ~]# awk -F: '$3>=1000{print $1}' /etc/passwd nfsnobody k8s 逻辑比较测试

&&逻辑与:期望建立多个条件 ||逻辑或:只要有条件,立即满足要求 #并 [root@zabbix-server ~]# awk -F: '$3>=0&&$3<2{print $1,$3}' /etc/passwd root 0 bin 1 #或 [root@zabbix-server ~]# awk -F: '$3==0||$3==7{print $1,$3}' /etc/passwd root 0 halt 7 运算符

,-,*,/,% ,--, =,-=,*=,/= #打印当前行号,除2余数等于0 [root@zabbix-server ~]# awk 'NR%2==0{print}' /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync halt:x:7:0:halt:/sbin:/sbin/halt 有5个数据可以在200以内被3和13排除 [root@zabbix-server ~]# seq 200 | awk 'BEGIN{i=0} $1%3==0&&$1==0{i } END{print i}' 510

———————————————— 版权声明:本文为CSDN博主「wangl2014」遵循原创文章CC 4.0 BY-SA版权协议,请附上原始来源链接和本声明。 原文链接:https://blog.csdn.net/wangl2014/article/details/121884478

标签: 电容柜akw

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台