awk 命令

gawk [options] [program] [file-list]
gawk [options] -f program-file [file-list]
gawk [option] ‘pattern { action } ’ [file-list]
如果使用程序, 那么要用单引号. 如果命令较多, 就可以使用命令文件.
常用选项:
1. -F 指定分隔符
2. -f 指定命令程序文件
3. -v var=value 指定变量

pattern { action } 模式 { 动作 }
pattern 模式用来选取行, 对于选中的每行文本, 都由action 执行相应的动作. 花括号使得模式和动作区分开来. 如果没有模式, 就选取所有行. 如果没有动作, 那就把选取的行复制到 stdout 中.
pattern 用 /正则表达式/ 搜索

~ 运算符用来测试某个字段或者变量是否与正则表达式匹配. “!~” 用来测试不匹配.
|| && 布尔运算, 这跟 C 语言一致. 比较运算符也和 C 一致.
BEGIN END 用来在 gawk 在处理输入信息之前和之后, 进行相关动作.
“,” 逗号运算符:
用 “;” 分号将各个动作分开, 同一行上可以有多个动作.
“#” 是注释

程序变量如下:
0: 1 $n: 表示当前记录中的字段
FILENAME: 当前输入名称, null 表示 stdin
FS: 输入字段分隔符, 通常是空格或 tab
OFS: 输出字段分隔符, 通常空格
RS: 输入记录分隔符, 通常换行符
ORS: 输出记录的分隔符, 通常换行符
NF: 当前记录的字段个数
NR: 当前记录的记录编号
可以在命令行或者程序中用 -v 变量=值 的方法, 改变上述变量, -v FS=; 改变输入字段分隔符为分号

函数:
length(str): 返回str 中字符个数, 如果不带参数, 返回当前记录中字符个数
int(num): 返回num 整数部分
index(str1, str2): 返回str2 在str1 中的索引位置, 如不存在, 返回0
split(str, arr, del): 以del 作为分隔符, 将str 元素放入arr[1]…arr[n] 中, 返回数组元素个数
sprintf(fmt, args): 根据fmt 格式化args, 返回格式化后的字符串
substr(str, pos, len): 返回str 中从 pos 开始, 长度为len 个字符的子串
tolower(str): 转换为小写
toupper(str): 转换为大写
算数运算符与C 语言一致.

printf “control-string”, arg1, arg2, …, argn 注意要使用逗号隔开
control-string 包含转换说明, 每个参数对应一个表达式, 语法: %[-][x[.y]]conv
其中, “-” 使printf 将参数左对齐, x 表示最小字段宽度, “.y” 表示数字中小数点右边的位数, conv 表示数值转换的类型. 类型如下:
d 十进制
e 指数表示
f 浮点数
g 使用f 或e 中较短的那个
o 无符号八进制
s 字符串
x 无符号十六进制

控制结构: 基本与C 保持一致
1. if…else
2. while
3. for
4. break 和 continue

示例: 见 “Linux 命令 编辑器与shell 编程” 14.6 节 Page 572

你可能感兴趣的:(awk 命令)