zoukankan      html  css  js  c++  java
  • linux常用命令 awk命令

    awk命令

    awk [选项] '条件1{动作1} 条件2{动作2}...' 文件名

    条件(Pattern)
    *) 一般使用关系表达式作为条件
    *) x>10 判断变量x是否大于10
    *) x>=10 大于等于
    *) x<=10 小于等于
    动作(Action)
    *)格式化输出
    *)流程控制语句
    awk 默认使用空格或制表符(Tab)作为分割符
    awk 一次处理一行内容
    awk 可以对每行进行切片处理
    
    $awk '{printf $1}' 输出首个字段
    

    awk的内置参数

    $0
    表示整个当前行
    $1
    表示每行第一个字段
    $2
    表示每行第二个字段
    ...
    

    awk自定义分隔符

    awk分隔符
    使用-f进行设定
    awk -F ':' '{print $3}' /etc/passwd  使用":"作为分割符
    awk -F ':' '{print $1,$3}' /etc/passwd 多个字段之间用,分割
    awk -F ':' '{print $1" "$3}' /etc/passwd 多个之间用空格分割
    

    awk内置参数NR,NF,FILENAME

    NR 每行记录号 行号
    NF 每行字段数 列号
    FILENAME 正在处理的文件名
    [root@ssgao1987 ~]# ll | awk '{print NR,NF}'
    1 2
    2 9
    3 9
    [root@ssgao1987 ~]# ll | awk '{print FILENAME}'
    

    awk 执行条件

    awk [选项] '条件1{动作1} 条件2{动作2}...' 文件名
    条件(Pattern)
    *) 一般使用关系表达式作为条件
    *) x>10 判断变量x是否大于10
    *) x>=10 大于等于
    *) x<=10 小于等于
    动作(Action)
    *)格式化输出
    *)流程控制语句
    

    awk条件使用逻辑判断式

    ~,!~ 匹配正则表达式
    ==,!=,<,>: 判断逻辑表达式
    awk逻辑判断实例
    [root@ssgao1987 ~]# ll
    总用量 52
    -rw-r--r--. 1 root root     0 7月  15 05:51 ls.log
    drwxr-xr-x. 2 root root  4096 7月  19 08:27 redis
    -rwxr--r--. 1 root root    86 7月  15 01:28 shell_01.sh
    drwxr-xr-x. 2 root root  4096 7月  15 06:55 ssgao
    [root@ssgao1987 ~]# ll | awk '$9~/ssgao/{print $9}' (条件判断式:$9~/ssgao/)
    ssgao
    
    [root@ssgao1987 ~]# ll | awk '$7>20 {print $0}' 
    -rw-r--r--. 1 root root   277 7月  30 17:11 df.log
    -rw-r--r--. 1 root root   493 7月  30 17:28 eth0.log
    

    awk扩展格式BEGIN,END

    awk [options] 'condition {command}' file
    扩展
    BEGIN{print "begin"} pattern {commands} END {print "end"}
    awk是读一行处理一行,处理是在commands中完成
    BEGIN是在读行之前进行操作的,相当于初始化
    END所有行执行后完成的
    
    [root@ssgao1987 ~]# awk -F ":" 'BEGIN{print "LINE CLO USER"}{print NR" "NF" "$1}END{print"----"FILENAME"----"}' /etc/passwd
    LINE CLO USER
    1 7 root
    2 7 bin
    3 7 daemon
    ----/etc/passwd----
     
    求和运算
    [root@ssgao1987 ~]# ll | awk 'BEGIN{size=0}{size+=$5}END{print "SIZE is:" size }'
    SIZE is:28340
     
    判断passwd文件中非空用户数
    awk -F ":" 'BEGIN{count=0}$1!~/^$/{count++}END{print "count =" count}' passwd
     
    判断passwd文件中UID大于100
    awk -F ":" 'BEGIN{count=0}{if($3>100) name[count++]=$1}END{for (i=0;i<count;i++) print i,name[i]}' passwd
    
    
  • 相关阅读:
    Android 程序架构: MVC、MVP、MVVM、Unidirectional、Clean...
    asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    反射中使用 BindingFlags.IgnoreCase
    JQuery判断数组中是否包含某个元素$.inArray("js", arr);
    Sql日期时间格式转换
    c#组元(Tuple)的使用
    逆向最大匹配分词算法C#
    [WEB API] CLIENT 指定请求及回应格式(XML/JSON)
    Jquery 将表单序列化为Json对象
    JS调试加断点
  • 原文地址:https://www.cnblogs.com/ssgao/p/8883671.html
Copyright © 2011-2022 走看看