首页 > 代码库 > Linux awk命令简单操作

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\n line two \n"}            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 \n" ,$1,"Admin";else printf "%-15s : %-15s\n" , $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\n" , STAT[i] , i}} #计算网络中lisiten数            7.内置函数                1.length(field) # 计算字段的长度