zoukankan      html  css  js  c++  java
  • Linux awk命令简单操作

    AWK Command:
        一 : print
            print item1,item2,..........
            要点:
                1.各项目之间使用逗号隔开,而输入时则以空白字符分隔
                2.输出的item可以为字符串或树枝,当前记录的字段(如$1).变来那个或awk的表达式,树枝会转换成字符串
                3.print命令后面的item可以省略,此时其功能相当于print $0,以此,如果想输出空白行,则需要print ""
    
            例子:
                1.awk 'BEGIN { pring "line one
     line two 
    "}'
                2.awk -F: '{ print $1,$2}' /etc/passwd
        二:awk变量
            1.awk内置变量之记录变量
                a.FS : filed separator ,默认空白分隔符
                b.RS : Record separator , 默认是换行符
                c.OFS : output filed separator 
                d.ORS : output Row Separator
    
                    etc.
                        awk -F:
                        OFS="#"
                        FS=":"
            2.awk内置变量之数据变量:
                a.NF number field 每行的总数
                    etc : 
                        awk '{pring NF}' /etc/passwd
                        awk '{pring $NF}' /etc/passwdA # 获取最后字段
            3.awk模式
                1.正则表达式
                    etc : awk -F: '/^r/{pring $1}' /etc/passwd
                2.表达式
                    etc : awk -F: '$3+1>=500{print $1,$3}' /etc/passwd
                3.字段匹配 # 以bash的用户
                    etc : awk -F: '$7~"bash$"{ print $1,$7}' /etc/passwd # ~(匹配) !~(不匹配)
                4.range,匹配范围
                    etc : awk -F: '1,7{print $1,$3}' /et/passwod
                5.BEGIN/END 执行1次(bash没执行1行,就要执行其中的命令)
                    etc awk -F: 'BEGIN{print "start"}{print $1}END{print "end"}' /etc/passwd
                6.空模式:
                    etc : awk -F:'{print "process"}' /etc/passwd # 对每行处理
                7.Action模式
                    1.if模式
                        etc : if(condition){then-body} else{else-body}
                                awk -F: '{if($1=="root")print $1,"Admin" else print $1,"Common User"}' /etc/passwd # 打印管理员
                                awk -F: '{if($1 == "root") printf "%-15s : %-15s 
    " ,$1,"Admin";else printf "%-15s : %-15s
    " , $1,"CommonUser";}' /etc/passwd
                    2.while
                        while(condition){suit}
                            etc : awk -F '{ i = 0;while(i < 4){ print $1; i++}}'
                        for:
                            etc : awk -F: '{for(i = 0; i < length(NF);i++){print $1}}' /etc/passwd
                        switch: # switch(expression) { case value or /REGEXP/:..,..,default:....}
                        breakcontinue 用于case
    
                        next : 提前处理当前行,跳过
                            etc : awk -F: '{if($1%2 == 0) next;print $1}' /etc/passwd
                        awk数组:
                            awk[mon] = 1
                            awk[thu] = 2
                            etc : netstat -tan | awk '{STAT[$NF]++}END{for(i in STAT) {printf "%-15s : %s
    " , STAT[i] , i}}' #计算网络中lisiten数
    
    
                7.内置函数
                    1.length(field) # 计算字段的长度
  • 相关阅读:
    webpack和webpack-dev-server安装配置
    webpack和webpack-dev-server安装配置
    Json和Jsonp
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    读undo 导致db file sequential read
    direct path read 研究
    SpringCloud的版本
    521忘记送大家礼物了,补上!
  • 原文地址:https://www.cnblogs.com/luowen/p/3888912.html
Copyright © 2011-2022 走看看