Lniux学-AWK使用

Posted chenri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lniux学-AWK使用相关的知识,希望对你有一定的参考价值。

AWK

AWK 与 sed 的区别

  • AWK用于比较规范的文本处理,用于统计数量并输出指定字段
  • sed 用于将不规范的文本,处理为比较规范的文本

AWK的字段引用和分离

  • AWK也是按行读取,每行称作记录,使用空格、制表符分隔开的单词称作字段,可以自己指定分隔符来隔开字段。
  • 使用$1 $2 ... $n 表示每一个字段,$0 表示一整行
    • awk ‘{print $1,$2,$3}‘ filename
    • awk -F "‘" ‘/^menu/{ print $2 }‘ /boot/grub2/grub.cfg 以‘号进行分割字段,取出文件中的内核信息
    • { print x++,$2 } x++ 可以显示行数
  • -F 选项用于指定分隔符
    • awk -F ‘,‘ ‘{print $1,$2,$3}‘ filename
    • 分隔符可以使用正则表达式表示

AWK的表达式

  • 系统变量
    • FS 和 OFS 字段分隔符,OFS 表示输出的字段分隔符

      • head -5 /etc/passwd | awk ‘BEGIN{FS=":"}{ print $1 }‘
        BEGING,在读入文件之前,进行预处理。在读入passwd文件之前,就通过FS选项指定好了以“:”作为分隔符。
      • head -5 /etc/passwd | awk ‘BEGIN{FS=":";OFS="-"}{ print $1,$2 }‘ OFS="-",OFS是在查找到字段后,系统是默认使用空格进行隔开,而OFS改变了默认隔开的符号。
    • RS 行记录分隔符,记录行,RS 默认就是一个换行符,在多行合并成单行时,使用RS进行处理

      • head -5 /etc/passwd | awk ‘BEGIN{RS=":"}{ print $1 }‘ 系统默认的行记录分隔符是换行符,RS=":",把行记录分隔符换成:
    • NR 和 FNR 行数

      • head -5 /etc/passwd | awk ‘{ print NR,$0 }‘ NR显示行号,$0显示行内容
      • awk ‘{ print NR,$0 }‘ /etc/hosts /etc/hosts
      • awk ‘{ print FNR,$0 }‘ /etc/hosts /etc/hosts
        对单个文件,使用NR和FNR没什么区别,若是接多个文件,NR会按顺序对内容一直排序,不区分文件;FNR是以先文件进行区分,再各自进行排序。
    • NF 字段数量,最后一个字段内容可以用 $NF 取出

      • head -5 /etc/passwd | awk ‘BEGIN{FS=":"}{ print NF }‘ 输出每一行中有多少个字段

以上是关于Lniux学-AWK使用的主要内容,如果未能解决你的问题,请参考以下文章

禅道ZenTao在windows和Lniux下集成安装环境和一键安装方法整理

Lniux下安装mysql----编译版

Lniux 安装及管理程序

深度学企业linux awk命令详解与应用(下篇)

深度学企业linux awk命令详解与应用(下篇)

awk学习之理解内置变量