Shell编程之awk

        awk是Linux以及UNIX环境中现有的功能最强大的数据处理工具。

        简单地讲,awk是一个强大的文本分析工具,把文件逐行读入,以空格为默认分割符将每行切片,切开的部分再进行处理。对数据进行排序,对其中的数值执行计算以及生成报表等。

        除此之外,awk 还是一种编程语言环境,它提供了正则表达式的匹配,流程控制,运算符,表达式,变量以及函数等一系列的程序设计语言所具备的特性。  

基本用法

  •  awk [ 参数 ] pattern {action} 文件名

        pattern:表示awk在数据中查找的内容,就是匹配模式

        action:在找到匹配内容时所执行的一些列命令

常用参数

常见参数
-F 指定列的分隔符,默认一行数据的列分隔符是空格
-v 自定义变量
-f {file} 指定读取程序的文件名

内置变量

常用内置变量
FILE_NAME 文件名
NR 指定显示行的行号
NF 表示字段数量
FNR 多文件时候,分别计数
OFS 输出格式的列分隔符,缺省是空格
RS 输入记录分隔符,指定输入时的换行符,原换行符($)仍有效
FS 输入文件的列分隔符,缺省是连续的空格和Tab
ORS 输出记录分隔符,输出时用指定符号代替换行符

 

执行步骤

  1. 自动从指定的数据文件中读取行文本。
  2. 自动更新awk的内置系统变量的值,例如列数变量NF、行数变量NR、行变量$0以及各个列变量$1、$2等。
  3. 依次执行程序中所有的匹配模式及其操作。
  4. 当执行完程序中所有的匹配模式及其操作之后,如果数据文件中仍然还有未读取的数据行则返回
  5.  回到第(1)步,重复执行(1)~(4)的操作。

演示案例

演示文件内容:

测试1 1 11

测试2 2 22

测试3 3 33

测试4 4 44

 打印文本

awk '{print $1}' awk.txt

awk '{print $1,$2,$3}' awk.txt

Shell编程之awk_第1张图片

 执行awk脚本

        在awk程序语句比较多的情况下,用户可以将所有的语句写在一个脚本文件中,然后通过awk命令来解释并执行其中的语句,语法如下:

awk -f command.txt awk.txt

 command.txt 内容如下 :{print $1,$2,$3}

Shell编程之awk_第2张图片

自定义变量

 

awk 'BEGIN{name="test";print name}' 

你可能感兴趣的:(shell编程,服务器,linux,运维)