kution 发表于 2018-8-22 10:58:46

shell awk 的一些用法

  #1、打印挂载目录的使用量,默认以空格为分割
df -Ph | awk '{ print $5,$6 }'  #2、以空格、冒号、\t、分号为分割
awk -F '[ :\t;]' '{print $1}'  #3、打印6.txt文件中的第3行至第5行,NR表示打印行,$0表示文本所有域
awk 'NR==3,NR==5 {print}' 6.txt  
awk 'NR==3,NR==5 {print $0}' 6.txt
  #打印6.txt文件中的第3行至第5行的第2列与第4列
awk 'NR==3,NR==5 {print $2,$4}' 6.txt  #打印7.txt文件中,长度大于6的行号和内容
awk 'length($0)>6 {print NR,$0}'  #以冒号切割,打印第一列同时只显示前5行:
cat /etc/passwd|head -5|awk -F: '{print $1}'  
awk -F: 'NR>=1&&NR=1&&NR$2)||($1>$3)) { print $2} else {print $1} }'  #9、awk与数组组合实战,统计passwd文件用户数
awk -F: 'BEGIN {count=0;} {name = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name}'/etc/passwd  #10、awk分析Nginx访问日志的状态码404、502等错误信息页面,统计次数大于20的IP地址。
awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}'  #11用/etc/shadow文件中的密文部分替换/etc/passwd中的"x"位置,生成新的/tmp/passwd文件。
awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print >>"/tmp/passwd"}' /etc/shadow /etc/passwd  #12、awk统计服务器状态连接数:
netstat -an | awk '/tcp/ {s[$NF]++} END {for(a in s) {print a,s}}'  
netstat -an | awk '/tcp/ {print $NF}' | sort | uniq -c
  #13、获取eth0的IP地址
ifconfigeth0|grep "Bcast"|awk '{print $2}' | awk -F: '{print $2}'  #14、在输出的开头和结尾添加输出
  #在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"
awk-F ':''BEGIN {print "name,shell"}{print $1"---"$7} END {print "blue,/bin/nosh"}' /etc/passwd  #15、找出不允许登录的系统用户
awk -F : '/nologin/{print $1}' /etc/passwd  #16、找出root组的用户
awk -F: '$4 ==0 {print "The user of group root:" $1}' /etc/passwd

页: [1]
查看完整版本: shell awk 的一些用法