awk 学习
一、awk基本用法
下图展示的awk编程模型是理解awk的基础:
二、awk基本用法
调用awk有三种方法(与sed类似):
在Shell命令行输入命令调用awk,格式为:
awk [-F 域分隔符] ‘awk程序段’ 输入文件
将awk程序段插入脚本文件后,然后通过awk命令调用它:
awk -f awk脚本文件 输入文件
将awk命令插入脚本文件后,最常用的方法是设置该脚本文件为可执行,然后直接执行该脚本文件,格式为:
./awk脚本文件输入文件
第二种方法脚本文件的首行不以#!/bin/awk –f开头;第三种方法脚本文件的首行是#!/bin/awk –f
推荐使用第一种方法和第三种方法
三、awk记录和域
awk认为输入文件是结构化的,awk将每个输入文件行定义为记录,行中的每个字符串定义为域,域之间用空格、Tab键或其他符号进行分割,分割域的符号就叫分隔符
与其他编程语言一样,awk表达式用于存储、操作和获取数据,一个awk表达式可由数值、字符常量、变量、操作符、函数和正则表达式自由组合而成
变量是一个值的标识符,定义awk变量非常方便,只需定义一个变量名并将值赋给它即可。变量名只能包含字母、数字和下划线,而且不能以数字开头
四、awk系统变量:
awk定义了很多内建变量用于设置环境信息,我们称它们为系统变量,这些系统变量可分为两种:
第1种用于改变awk的缺省值,如域分隔符;
第2种用于定义系统值,在处理文本时可以读取这些系统值,如记录中的域数量、当前记录数、当前文件名等,awk动态改变第2种系统变量的值
五、awk格式化输出
awk的一大主要功能是产生报表,报表就要求按照预定的格式输出,awk借鉴C语言的语法,定义了printf输出语句,它可以规定输出的格式。printf的基本语法如下:
printf (格式控制符,参数)
格式控制符分为awk修饰符和格式符
六、awk内置字符串函数
awk内置字符串函数极为强大,是Shell处理字符串的常用工具
七、awk数组
数组是用于存储一系列值的变量,这些值之间通常是有联系的,可通过索引来访问数组的值,索引需要用中括号括起,数组的基本格式为:
array[index]=value
关联数组是指数组的索引可以是字符串,也可以是数字
关联数组在索引和数组元素值之间建立起关联,对每一个数组元素,awk自动维护了一对值:索引和数组元素值
关联数组的值无需以连续的地址进行存储,awk的所有数组都是关联数组
字符串和数字之间的差别是明显的,如,我们使用array[09]指定一个数组值
split(r,s,t)函数将字符串以t为分隔符,将r字符串拆分为字符串数组,并存放在s中,此时s通常就是一个数组
awk 'BEGIN {print split("abc/def/xyz",str,"/")}'
上面命令以“/”为分隔符,将字符串abc/def/xyz分开,并存在str数组中,split函数的返回值是数组的大小
awk可使用for循环打印数组内容
for (variable in array)
do something with array[variable]
ARGC是ARGV数组中元素的个数,与C语言一样,从ARGV[0]开始,到 ARGV[ARGC-1]结束
ENVIRON变量存储了Linux操作系统的环境变量
转载于:https://blog.51cto.com/peaceweb/761187