awk命令

Posted 两片空白

tags:

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

一.介绍

        awk是专门为文本处理设计的编程语言,是一门数据驱动的编程语言。与sed类似,都是以数据驱动的行处理软件,主要用于数据扫描,过滤和汇总。数据可以来自于标准输入,管道或者文件。

二.语法

        awk是一种处理文本文件的编程语言,文件的每数据都被称为记录。默认以空格或者制表符为分隔符,每条记录分成了若干字段(列)。awk每次从文件中取出一条记录。

        格式:

awk [选项] '条件动作  条件动作 ... ... ' 文件名

三.变量

        awk语法由一系列条件和动作组成,在花括号内可以有多个动作,多个动作之间用分号分隔。在多个条件和动作之间可以有多个空格。

        如果没有指定条件则匹配所有数据,如果没有指定动作,则默认为print打印动作。

        3.1 常用内置变量:

  • FILENAME:当前输入文档名称。
  • FNR:当前输入文档的当前行号,尤其是在有多个输入文档时有用。
  • NR:输入数据流的当前行号。
  • $0:当前行的全部内容。
  • $n:当前行第n个字段的内容。(n >= 1)
  • NF:当前记录(行)的字段(列)个数。
  • FS:字段分隔符,默认为空格或者Tab制表符。
  • OFS:输出字段的分隔符,默认为空格。
  • ORS:输出记录分隔符,默认为换行符\\n。
  • RS:输入记录分隔符,默认为换行符\\n。

         同样时输出行号,NR是将所有文件的数据视作一个数据流,而FNR是将多个文件的数据s视为独立的若干个数据流,遇到新文件时行号从1开始递增。

        3.2 自定义变量

         3.3 调用系统变量

         3.4 自定义分隔符

        awk默认使用空格,换行符,制表符作为分隔符,可以使用'-F'自定义分隔符。

         3.5 内置变量RS,OFS,ORS

  • RS

        内置变量RS保存的是输入数据的行分隔符,默认为'\\n',可以指定其他符号作为分隔符。

  •  OFS

        保存输出列分隔符(列分隔符),默认为空格。输出后每一列的分隔符。输出以设置的OFS作为分隔符。

  •  ORS

        保存输出行的分隔符。默认是'\\n'

         3.6 print指令

        可以输出常量与变量,如果是字符串常量需要用双引号括起来,数字常量可以直接打印。

         3.7 条件匹配

        awk支持使用正则进行模糊匹配,也支持字符串和数字的精确匹配,也支持逻辑与和逻辑或。

        使用: 

         3.8 BEGIN和END

        BEGIN导致动作指令仅在读取任何数据记录前执行一次,END导致动作指令仅在读取完所有数据记录后执行一次。

        BEGIN可以进行数据初始化,END可以进行数据汇总。

         3.9 数值计算

         awk中的变量不需要定义就可以直接使用,未定义的字符为空,未定义数值,值为0。

         3.10 循环计数

        遇到符合条件的记录,进行动作。

 四.条件判断语句

        if后面如果只跟一个动作指令,则花括号可以省略,如果if后面的指令为多条则需要使用花括号括起来,多个指令使用分号分隔。

        4.1 单分支语句

         语法:

if(判断条件)动作指令;... ...

         4.2 双分支语句

        语法:

if(判断条件)动作指令;... ...else动作指令;... ...

统计系统用户个数和普通用户个数

        4.3 多分支语句

        语法:

if(条件1)动作指令;... ...else if(条件2)动作指令;... ...else动作指令;... ...

 五.数组与循环

         5.1 循环

        语法:

for(变量 in 数值名)动作指令

         遍历数组:

        变量是索引,数组[变量]是值。

         成员关系判断:

         5.2 for循环

        语法:

for(表达式1;表达式2;表达式3)动作指令;... ...

        统计/etc/passwd中root出现次数。里面包含两层循环。第一层隐藏循环,awk遍历每一记录(行),显示循环遍历每一行的每一列。 

         5.3 while循环

        语法:

while(条件)动作指令;... ...

        示例:

         5.3 循环中断语句

        与shell一样,awk提供了break,continue和exit语句,作用相同。

详细: awk命令详解_运维@小兵的博客-CSDN博客_awk

以上是关于awk命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux入门系列——awk命令详解

linux awk命令怎么用?

如何在Linux中使用awk命令

linux awk命令怎么用?

awk 命令

Linux awk -F 命令如何指定输出双引号里的内容,求助