Linux习题专题

1.统计问题

        给定一个文档 bill.txt,里面是每个用户分批次存的钱,内容如下:

feng    100
yang   200
feng    350
li    200
ma   100000
zhao    239
li    890
zhang  100
zhang   350
ma   1000

        请统计出每个用户一共有多少钱?

1.1答案:

[root@master 77]# awk '{name[$1]+=$2}END{for (i in name) print i,name[i]}' bill.txt 
li 1329
feng 650
zhang 450
ma 101000

1.2解析:

        name[$1]+=$2 拿$1字段做key,让$2做value,如果数组里有key,就累加,如果没有,初始值是0+value。

        END{for (i in name) print i,name[i]}   END是文件里所有的行都处理完了,最后去执行END部分里的命令。
          for 循环取遍历name数组里的元素(item),i取name数组里的key,输出key和对应的value。

2、小练习

        1.只显示df -h结果的第1列文件系统

df -h|awk 'NR==1{print NR,$0}'

        2.显示passwd文件的第5行和第10行的行号和用名

awk -F':' 'NR==5 ||NR==10{print NR,$1}' /etc/passwd

        3.使用NF变量显和passwd文件倒数第二列的内容

 tail -2 /etc/passwd|awk 'NR==1{print $0}'

        4.显示passwd文件中第5到第10行的用户名

  awk -F: 'NR>=5 && NR<=10{print $1}' /etc/passwd

        5.显显passwd文件中第7列不是bash的用户名

  grep -v bash /etc/passwd |awk -F: '{print $1}'
  awk -F: '$7 !~/bash/{print $0}' /etc/passwd

        6..显示passwd文件中行号是5结尾的行号和整行内容

  awk 'NR ~/5$/{print NR,$0}' /etc/passwd

        7.用ifconfig/ip add只显踪ip

  ip a |egrep -o '[0-9]{3}\.[0-9]{3}\.[0-9]{3}\.[0-9]{3}/[0-9]{2}'

        8.ifconfig命令后使用awk显示ens33的入站流量和出站流量(字节)

 ifconfig ens33|egrep "RX packets | TX packets"
  ifconfig |egrep -A8 '^ens33' |awk '/RX p/ || /TX p/{print $1,$5}'

        9.使用awk命令统计以r开头的用户数目,显示如下效果

  awk 'BEGIN{num=0;print "####start#######"}$1 ~/^r/ {print num++,$1}END{print"数目:"num}' /etc/passwd

        10.显示每隔2秒的流量的变化

  watch -n 2 -d "ifconfig|awk 'NR==6{print \$5}'"
  watch -n 2 -d "ifconfig |egrep -A8 '^ens33' |awk '/RX p/ || /TX p/{print \$5}'"

        11.统计/etc/passwd文件里以岍头的用户的数量,并且显示出驴名

 awk -F: 'BEGIN{num=0;print "####start#######"}$1 ~/^r/ {print num++,$1}END{print"数目:"num,"用户名:"$1}' /etc/passwd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值