23 - awk条件判断

条件判断概述

  • 输出所有行还是输出部分行
  • 如何限制仅输出部分行的数据内容
  • 如何设置多个条件
  • 基本语法
    • 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的条件判断
    • 正则表达式
    • 数值/字符比较练习
    • 逻辑处理联系

你可能感兴趣的:(23 - awk条件判断)