• awk神器


    先上硬货

    学习语法之前先介绍下awk的几个内建变量

    $0 当前记录(这个变量中存放着整个行的内容)
    $1~$n 当前记录的第n个字段,字段间由FS分隔
    FS 输入字段分隔符 默认是空格或Tab
    NF 当前记录中的字段个数,就是有多少列
    NR 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
    FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号
    RS 输入的记录分隔符, 默认为换行符
    OFS 输出字段分隔符, 默认也是空格
    ORS 输出的记录分隔符,默认为换行符
    FILENAME 当前输入文件的名字

    常用语句如下

    awk'{print $1, $4}'netstat.txt
    awk'{printf "%-8s %-8s %-8s %-18s %-22s %-15s
    ",$1,$2,$3,$4,$5,$6}'netstat.txt
    awk'$3==0 && $6=="LISTEN" 'netstat.txt
    awk'$3==0 && $6=="LISTEN" || NR==1 'netstat.txt
    awk'$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s
    ",$4,$5,$6}'netstat.txt
    awk'$3==0 && $6=="ESTABLISHED" || NR==1 {printf "%02s %s %-20s %-20s %s
    ",NR, FNR, $4,$5,$6}'netstat.txt
    awk  'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd
    awk  -F '[:;]' '{print $1,$3,$6}' /etc/passwd   比较有用的一句 -F 指定分隔符
    awk -F '[:;]' '$1=="suqian" {printf "%s,%s ", $3,$6}' /etc/passwd //指定分隔符,比较,输出都有
    awk'$6 ~ /FIN/ || NR==1 {print NR,$4,$5,$6}'OFS="	"netstat.txt
    awk'$6 ~ /WAIT/ || NR==1 {print NR,$4,$5,$6}'OFS="	"netstat.txt
    awk'$6 ~ /FIN|TIME/ || NR==1 {print NR,$4,$5,$6}'OFS="	"netstat.txt
    awk'$6 !~ /WAIT/ || NR==1 {print NR,$4,$5,$6}'OFS="	"netstat.txt
    awk'NR!=1{print > $6}'netstat.txt
    awk'NR!=1{if($6 ~ /TIME|ESTABLISHED/) print > "1.txt";
    elseif($6 ~ /LISTEN/) print > "2.txt";
    elseprint > "3.txt"}' netstat.txt

    总结格式

    awk '条件 {if判断 print > 重定向 }' 文件名 其中 print格式化 例如
    {printf "%02s %s %-20s %-20s %s
    ",NR, FNR, $4,$5,$6}

    或者

    脚本形式 BEGIN{}{}END{}可以使用内置变量 print的时候用 "%s %d"
    例如   printf"  TOTAL:%10d %8d %8d 
    ", math, english, computer



    顺道贴上抄袭的地址 http://foyon.blog.163.com/blog/static/20103427520134715410351/?latestBlog
  • 相关阅读:
    canvas-0translate.html
    Canvas-line.html
    canvas-tangram.html
    canvas-arc.html
    js-MediumGrade-base.js
    js-Higher-base.js
    js-QuickStart-base.js
    ajax.js
    fullScreen.html
    setInterval.js
  • 原文地址:https://www.cnblogs.com/sailrancho/p/3389138.html
Copyright © 2020-2023  润新知