美文网首页
awk的使用方法

awk的使用方法

作者: watson168 | 来源:发表于2017-12-08 11:10 被阅读20次

    awk 用法:

    常用格式: awk [options 参数] 'commands' testfiles

    options选项:

    ① -F    定义字段分隔符,默认分隔符为连续空格或制表符。用$1,$2,$3等顺序表示files中每行以间隔符号分隔的各列不同域
    ② -v    定义变量并赋值,也可以借用其他方式从shell变量中引入变量
    
    FS 目前的分隔符,默认是空格键
    NF 每一行($0)拥有字段的总数
    NR 目前awk所处理的是“第几行”数据 
    $NF 每一行的最后一列
    例子:
      awk -F":/" '{print $1,$7}'   testfile     以冒号加斜杠 “:/”整体作为分隔符
      awk -F"[:/]" '{print $1,$7}' testfile     以冒号或斜杠 / 作为分隔符,打印第1第7个字段
      awk -v num=$num -v num1=$num1 'NR==num,NR==num+num1{print}' a 
    
    例子1:

    列出与密码文件的前五行,并展示出行数、每行有多少列(以0开始计数)

    [root@scott 桌面]# cat /etc/passwd  | head -n 5 | awk -F ':' '{print $1 "\t lines:" NR "\t" "column:" NF}'
    root         lines:1    column:7
    bin          lines:2    column:7
    daemon       lines:3    column:7
    adm          lines:4    column:7
    lp           lines:5    column:7
    

    找出uid 小于10(第三列) 并且列出账号和uid
    [root@scott 桌面]# cat passwd  | awk -F ':'  '$3 <= 10 {print $1 "\t" $3 }' 
    root    0
    bin 1
    daemon  2
    adm 3
    lp  4
    sync    5
    shutdown    6
    halt    7
    mail    8
    uucp    10
    
    统计文件行数
    [root@scott ~]# awk 'END{print NR}' file 
    40
    
    通过ipconfig显示出IP :
    ifconfig |awk 'NR==2{split($2,a,":");print a[2]}'
    
    通过ip a 显示出IP:
    ip a | awk 'NR==8 {print $2}' | awk -F '[/]' '{print $1}' 
    
    在passwd文件最前和最后一行添加** :
     awk ' BEGIN {print "********"} {print  $0} END {print "********"}' passwd
    
    统计tcp各状态的连接数
    [root@zabbix-test121 wz]#  netstat -ant|grep [0-9] |awk ' {S[$NF]++}END{for(k in S) print S[k],k}'
    18 TIME_WAIT
    4 ESTABLISHED
    11 LISTEN
    
    参考文章:

    相关文章

      网友评论

          本文标题:awk的使用方法

          本文链接:https://www.haomeiwen.com/subject/lsxeixtx.html