AWK

作者: 空语 | 来源:发表于2018-11-13 16:58 被阅读0次

    1.基本用法

      awk 动作  文件
    
      awk  '{print $0}'  demo.txt
    

    demo.txt 为需要处理的文件 动作为需要执行的语句或命令
    0 表示 demo.txt 中整行的内容 awk 会将每行的内容切割 分隔符默认为空格或制表符(tab) 使用+数字 表示 分别表示为 $1, $2, $3

    $ echo  “this is php” | awk '{print $1}' 
    this
    
    $ echo  “this is php” | awk '{print $3}' 
    php
    

    也可自定义分隔符 使用 -F 参数

    $ echo "is:11" |awk -F ":" '{print $1}'
    

    使用 /etc/passwd 文件为例

    $ cp /etc/passwd  test.log    //copy到当前目录分析
    $ awk -F ":" '{print $3}' test.log
    /var/db/findmydevice
    /var/db/datadetectors
    /var/empty
    /var/empty
    /var/db/applepay
    /var/db/hidd
    /var/db/cmiodalassistants
    /var/db/analyticsd
    /var/db/fpsd
    /var/db/timed
    /var/db/reportmemoryexception
    

    2.使用匹配

    awk '正则表达式 {shell语句}' 文件

    $ awk -F ":" '\_a\  {print $0}' test.log
    

    3.使用IF

    $ awk -F ":" '{if($1 > 3) print $1;else print "not this"}'  test.log
    

    4.判断

    awk '条件 动作' 文件名
    $ awk '$1 > 3 {print $1}' t.log
    $ awk '$1 >3 || $2 < 100 {print $0}' t.log 
    

    5.动作分块

    awk 'BEGIN{动作1} {动作2} END{动作3}' 文件
    动作1 在处理所有行前执行 执行一次
    动作2 每行执行一次
    动作3 当处理完所有行后 最后执行 执行一次

    //统计行数
    awk 'BEGIN{i=0} {i++} END{print "all  count  is",i}' t.log
    

    相关文章

      网友评论

          本文标题:AWK

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