AWK

来源:互联网 发布:手机强制视频软件 编辑:程序博客网 时间:2024/04/28 09:57

AWK用途:

AWK 是一种用于处理文本的编程语言工具。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
 
命令方式:
但命令的语法始终是:
awk '{pattern + action}' {filenames}
  其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
 
分隔符:
默认的字段分隔符是空格或制表符(多个空格仍然作为一个分隔符),而记录的分隔符是换行。可以使用“-F”将分隔符从空格改为任何其它字符。 如下:
 
awk -F"/|" '{print $22}' ./source/M0401420040831000001.AVL|sort -u
 
用法:
46012 DULANEY EVAN MOBILE AL
46013 DURHAM JEFF MOBILE AL
46015 STEEN BILL MOBILE AL
  当 AWK 读取输入内容时,整条记录被分配给变量 $0。每个字段以字段分隔符分开,被分配给变量 $1、$2、$3 等等。一行在本质上可以包含无数个字段,通过字段号来访问每个字段。因此,命令
awk '{print $1,$2,$3,$4,$5}' names
 
将会产生的打印输出是
46012 DULANEY EVAN MOBILE AL
46013 DURHAM JEFF MOBILE AL
46015 STEEN BILL MOBILE AL
 
使用模式:
模式匹配的最简单形式是搜索,其中要匹配的项目被包含在斜线 (/pattern/) 中。
例如:$ awk '/AL/ {print $3,$2}' emp_names
对同一数据集的多个命令可以用分号 (;) 分隔开。例如,在一行中打印姓名,而在另一行中打印城市和州名:
$ awk '/AL/ {print $3,$2 ; print $4,$5}' emp_names
 
另一方面,如果分别给出两个打印语句,则会产生完全不同的结果:
$ awk '/AL/ {print $3,$2} {print $4,$5}' emp_names
 
只有在列表中找到 AL 时才会给出字段三和字段二。但是,字段四和字段五是无条件的,始终打印它们。只有第一组花括号中的命令对前面紧邻的命令 (/AL/) 起作用。
 
通过连续设置多项标准并用管道 (|) 符号将其分隔开,您可以一次搜索多个模式匹配:
$ awk '/AL|IN/' emp_names
原创粉丝点击