码迷,mamicode.com
首页 > 其他好文 > 详细

AWK

时间:2020-07-17 16:31:15      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:pass   selinux   之间   operator   情况   $0   分解   有一个   file   

概念:

工作原理

  • 扫描文件从第一行到最后一行 进行处理文件
  • 使用一行作为输入,并将这一行赋值给内部变量$0
  • 然后,行被 " : " (默认为空格或制表符)分解成字段或域,每个字段存储在已编号的变量中,从$1开始编号
  • 内部变量"FS"来确定字段分割符
  • AWK打印字段时,print函数打印,awk在打印的字段之间加上空格,因为$1,$3之间有一个逗号,逗号被定为输出字段分割符OFS
  • awk输出之后,将从文件中获取另一行,将其存储在$0中,覆盖原来的内容

AWK的命令格式

  • 默认情况下是空格和(tab)进行分割

  • awk的两种形式的语法格式

    • awk [options] ‘commands‘ filename

    • options

      • -F 指定分隔符,默认的分隔符是空格或者制表符(tab)
    • command

      • BEGIN{} {} END{}
      • 行处理前(读文件之前) 行处理 行处理后
    • Example:

      • 这个例子的意思是在读取config文件之前打印了1/2,然后每读取文件一行打印一个OK,文件读取完成后打印“---------”
      awk ‘BEGIN{print 1/2}   {print "ok"}   END{print "endfile"}‘ /etc/selinux/config
      0.5
      ok
      ok
      ok
      ok
      ok
      endfile
      • 
        -F ":" 实际含义就是  这里FS指定了冒号和  
        awk ‘BEGIN{FS=":"} {print $1,$2}‘ /etc/passwd
        root x
        bin x
        daemon x
        adm x
        lp x
        sync x
        shutdown x
        OFS指定了输出的方式
        awk ‘BEGIN{FS=":";OFS="---"} {print $1,$2}‘ /etc/passwd
        root---x
        bin---x
        daemon---x
        adm---x
        lp---x

AWK的命令格式:

  • awk ‘pattern‘ (模式,正则表达式的模式)filename

    awk ‘/root/‘ /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    pattern 模式 指的是正则表达式

  • awk ‘{action}‘ filename

    awk -F: ‘{print $1}‘ /etc/passwd
  • awk ‘pattern {action}‘ filename

    awk -F ":" ‘/root/{print $1,$3}‘ /etc/passwd
    root 0
    operator 11
    
    awk ‘BEGIN{FS=":"} /root/{print $1,$3}‘ /etc/passwd
    root 0
    operator 11

AWK的内部变量

  • $0 记录文本的内容

  • NR 返回屏幕文本所有内容的行号

  • FNR

    awk -F: ‘{print FNR,$0}‘ /etc/passwd
  • NF 指的行字段的数字

    $NF 指的是最后一个字段

  • FS 输入字段分割符,默认为空格

  • OFS 输出字段分隔符

  • RS

    awk -F: ‘BEGIN{RS=""} {print $0}‘ filename
  • ORS

    区别:

    ? 字段分隔符: FS OFS 默认空格或制表符

    ? 记录分隔符:RS ORS 默认换行符

AWK

标签:pass   selinux   之间   operator   情况   $0   分解   有一个   file   

原文地址:https://blog.51cto.com/9058067/2511248

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!