gawk 使用方法简介

游戏攻略04

gawk 使用方法简介,第1张

gawk 使用方法简介
导读: 其功能与特性包括: gawk options program file 构成 gawk 脚本的语句须包含在一对 大括号 ( {} )中,而作为命令选项的整个脚本需要包含在一对 引号 中: gawk 会自动地将每行文本中的每

其功能与特性包括:

gawk options program file

构成 gawk 脚本的语句须包含在一对 大括号 ( {} )中,而作为命令选项的整个脚本需要包含在一对 引号 中:

gawk 会自动地将每行文本中的每个 数据字段 赋值给一个指定的变量,默认情况下,预先定义的变量为:

文本行中的数据字段是通过预先定义的 字段分隔符 来分隔开的,默认为 空格 (包括 TAB

gawk 语言允许在脚本语句中组合多个命令使用,只需要在各命令之间使用 分号 ( ; )分隔开即可

也可以这样:

其中 My name is Rich 是运行时程序获取的用户输入,My name is Christine 是程序运行后的输出

默认情况下,gawk 从输入中读取一行文本,再对该文本执行程序指令。而有时候需要在读取待处理数据之前先执行某些指令,此时就要用到 BEGIN 关键字。
同样的, END 关键字允许你指定在数据处理完成后才执行的脚本。

gawk 允许先将其程序脚本保存在某个文件中,再通过 -f 选项指定该文件的文件名。而在脚本文件中,各命令不再需要通过 ';' 符号分隔,直接分行列出即可。

程序语言最重要的特性之一就是定义和引用 变量 。gawk 语言支持两种类型的变量:内建变量和用户自定义变量。

gawk 程序在处理文本数据时,一次只读取一小段文本,称为 Record 。默认的 Record 分隔符即为换行符。而每条 Record 又可进一步划分成 字段 (Data Field),并按顺序依次赋值给 $1,$2,$n 等。默认的字段分隔符为空格(包括 TAB)

默认的 OFS 为空格

当定义了 FIELDWIDTHS 变量时,gawk 在读取数据时就会忽略字段分割符(FS),转而使用 字段宽度 来分割数据。

有些时候会遇到如下组织方式的文本文件:

此时可将字段分隔符(FS)设置为 "\n",Record 分隔符(RS)设置为空字符串,则 gawk 程序会将 空行 作为一条 Record 的终止点。

ARGV 的索引是从 0 开始的,表示第一个命令行参数(呃,所以通常就是 gawk 这个命令本身)。程序脚本(引号中的内容)不算在参数内。

定义数组: var[index]=element

遍历数组:

匹配符(~)用来对 Record 中的特定字段使用正则表达式。 !~ 表示不匹配。

if (condition) statement

for( variable assignment; condition; iteration process)

printf 命令格式: printf "format string", var1, var2
常用格式控制符如下表所示:

控制字符 以外,还可以使用另外三种修饰符以对输出进行更多的控制。

参考下面的示例, %101f 中的 10 用于指定字段的最小宽度(右对齐,前面用空格补), 1 用于指定精确度。

定义函数

使用函数

函数库
创建函数库

调用函数库

Linux Command Line and Shell Scripting Bible 3rd Edition