awk编程,循环判断的基本使用

3 篇文章 0 订阅
2 篇文章 0 订阅

1.  if 判断

shell中的if语句结构:

if [条件];then
    echo 'hello'
else
    echo 'nihao'
fi

在awk 中的if结构:

if(3>1){}
if(3>x){a}else{b}
if(3>6){a} else if(3>5){b} else{c}
if(3>1){a;b};c            #c 肯定会执行

awk '{if(){} else{}}' 文件

统计系统中uid大于和小于500 的人数

awk -F ':' '{if($3>500){x++} else{y++}} END{print x,y}' /etc/passwd

shell的思路如下:

x=0,y=0
if [ $3>500 ];then
    let x++
else
    let y++
fi

判断能登录系统和不能登录系统的用户数量,并且显示可登录的用户名

awk -F ':' '{if($7~/bash$/){x++;print $1} else{y++}} END{print x,y}' /etc/passwd

2. while循环,for循环

awk '{i=1;while(i<=NF){print NF,i;i++}}' a.txt   #变量的初始值为1,若i小于等于NF(列数),则执行打印语句,且i增加1。直到i的值大于NF.

awk '{for(i=1;i<NF;i++)print NF,i}' a.txt         #作用同上

统计/etc/passwd 中user出现了多少次

awk -F ':' '{i=1;while(i<=NF){if($i~/user/){x++};i++}} END{print x}' /etc/passwd

统计nginx的访问量

awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' /var/log/access.log | sort -n

或者

awk '{print $1}' /var/log/access.log | sort | uniq -c

uniq 忽略文件中的重复行,-c 显示重复的次数

sort 排序,-n 按照数值大小排序

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值