Shell Awk简介

Awk是一种编程语言,可轻松处理结构化数据并生成格式化的报告。Awk代表其作者的名字“ Aho,W einberger和K ernighan”。

Awk主要用于模式搜搜和处理。它搜索一个或多个文件以查看它们是否包含与指定模式匹配的行,然后执行关联的操作。

主要功能

Awk的一些关键功能包括:

  • Awk将文本文件视为记录和字段。
  • 像普通的编程语言一样,Awk具有变量,条件和循环
  • Awk具有算术和字符串运算符。
  • AWK可以生成格式化的报告

Awk从文件或其标准输入中读取,然后输出到其标准输出。Awk不会与非文本文件相处。

执行流程

  1. Awk一次一行读取输入文件。
  2. 对于每一行,如果匹配执行相应的操作,则它以给定的顺序与给定的模式匹配。
  3. 如果没有任何模式匹配,将不执行任何操作。
  4. 在以上语法中,搜索模式或操作是可选的,但不能同时选择两者。
  5. 如果未提供搜索模式,则Awk将对输入的每一行执行给定的操作。
  6. 如果未给出操作,则打印与给定模式匹配的所有行,这是默认操作。
  7. 空括号不执行任何操作。它不会执行默认的打印操作。
  8. 动作中的每个语句都应以分号分隔。

常见的例子

1. 打印文件每一行

$ awk'{print;}'employee.txt

2. 打印匹配的行

$ awk '/jack/tony/' employee.txt

3.打印指定的列
Awk具有许多内置变量。对于每条记录(即一行),默认情况下,它将以空格字符分隔的记录分割并将其存储在$ n变量中。如果该行有4个单词,它将存储在$ 1,$ 2,$ 3和$ 4中。$ 0代表整行。NF是一个内置变量,代表记录中字段的总数。

$ awk '{print $ 2,$ 5;}' employee.txt

4.模式
Awk有两个重要的模式,它们由关键字BEGIN和END指定。

Syntax: 

BEGIN { Actions}
{ACTION} # Action for everyline in a file
END { Actions }

例子:

$ awk 'BEGIN {print "Name\tDesignation\tDepartment\tSalary";}
> {print $2,"\t",$3,"\t",$4,"\t",$NF;}
> END{print "Report Generated\n--------------";
> }' employee.txt

5.大于条件查找

$ awk '$ 1> 200' employee.txt

6.匹配条件查找

 awk' $4〜/ Technology /' employee.txt

7.统计行数

$ awk 'BEGIN { count=0;}
$4 ~ /Technology/ { count++; }
END { print "Number of employees in Technology Dept =",count;}' employee.txt
Number of employees in Tehcnology Dept = 3

AWK是shell下面文本搜索处理三大神器之一,掌握AWK的用法对开发处理问题很有帮助。

Bash技巧和窍门
linux日志管理神器:logrotate
Tags:,