• awk工具-解析1


    awk处理方式:

    1.行处理机制,每次处理一行,跟sed很相近,但是awk还能够对每行进行切片处理

    基本格式:

    awk [options]  'command' file(s)

    command:pattern {awk 操作命令}两部分组成

    pattern:正则表达式,逻辑表达式

    awk操作指令是用{ }代表代码段:

    操作指令:print(), printf()

    控制指令:if(){... } else{...},while(){...}

    awk内置参数应用:

    awk内置变量1:

    $0 代表整行

    $1代表第一个字段

    $2代表第二个字段

    awk内置参数:分隔符

    option:-F(默认为空格)

    awk -F ':'  '{print $3}' passwd

    如果想同时打两个字段: 有两种方式(中间加,或者打印空格)

    awk -F ':'  '{print  $1,$3}' passwd

    awk -F ':'  '{print $1"  " $3}' passwd

    可以增加说明字段:

    awk -F ':' '{print "USER" $1}' passwd

    内置变量2:

    NR :行号

    NF:每行的字节总数

    awk -F ':' '{print  NR,NF}' passwd

    例子:显示passwd每行的行号,每行的列数,以及用户名(用print和printf两种方式) 

    awk -F ':' '{print "Line: " NR,"Column :" NF,"User:" $1}' passwd

    因为printf是函数,则按照函数输出来写:

    awk -F ':' '{printf("Line:  %s  Column :  %s User: %s ",NR,NF,$1)}' passwd

    要有换行

    例子2:显示passwd中用户ID大于100的行号和用户名(if ...else...)

    awk -F ':' '{if($3>100) print "Line: " NR,"User:" $1}'  passwd

    例子3:在服务器log中找出ERROR的错误时间信息,一般是第一字段

    这时候首先找出ERROR出现的行,在打印第一字段

    sed -n ' /ERROR/p'  log名字 |awk  '{ print $1}'

    还可以: 

    awk '/ERROR/{print $1}' log名字  先用正则定位在打印

     

  • 相关阅读:
    yum提示Another app is currently holding the yum lock
    函数参数返回值作用域笔记
    递归内置函数笔记
    装饰器笔记
    函数笔记扩展
    集合笔记
    线程和进程
    函数笔记
    线程与进程的区别
    Ubuntu操作及各种命令笔记.txt
  • 原文地址:https://www.cnblogs.com/shamoguzhou/p/7092175.html
Copyright © 2020-2023  润新知