Awk表达式和系统变量
一、awk表达式
一个awk表达式可由数字、字符常量、变量、操作符、函数和正则表达式自由组合而成。
awk中的变量不需要声明,直接定义赋值即可。变量名不能以数字开头,每个变量有两种类型的值:
数值和字符串值,变量默认数值为0,默认字符串值为空。示例:
x = 1; // = 是赋值符,将x赋值为1
z = “very” “good” //空格分隔两个字符串,将z赋值为very(空格)good
awk可进行变量和数字之间的算术操作。以下是awk算术运算符及其意义:
awk算术运算符及其意义
运算符 | 意义 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 模 |
^或** | 乘方 |
++x | 返回x值之前,x变量自加 |
x++ | 返回x值之后,x变量自加 |
二、awk系统变量
awk定义了许多内建变量用于设置环境信息,谓之系统变量。它们分为两种:①用于改变awk默认值,如域分隔符;②用于定义系统值,处理文本是可读取它们的,awk动态改变它们的值,如当前记录数、当前文件名等等。
Awk 环境变量及其意义
变量名 | 意义 |
$n | 当前记录的第n个域,域间有FS分隔 |
$0 | 记录的所有域 |
ARGC | 命令行参数数量 |
ARGIND | 命令行中当前文件位置(从0开始标号) |
ARGV | 命令行参数数组 |
CONVFMT | 数字转换格式 |
ENVIRON | 环境变量关联数组 |
ERRNO | 最后一个系统错误的描述 |
FIELDWIDTHS | 字段宽度列表,以空格键分隔 |
FILENAME | 当前文件名 |
FNR | 浏览文件的记录数 |
FS | 字段分隔符,默认为空格键 |
IGNORECASE | 布尔变量,为真,进行忽略大小写的匹配 |
NF | 当前记录中的域数量 |
NR | 当前记录数 |
OFMT | 数字的输出格式 |
OFS | 输出域分隔符,默认为空格键 |
ORS | 输出记录分隔符,默认为换行符 |
RLENGTH | 有match函数所匹配的字符串长度 |
RS | 记录分隔符,默认为空格键 |
RSTART | 有match函数所匹配的字符串的第一个位置 |
SUBSEP | 数组下标分隔符,默认值\034 |
本文完全参照 <linux shell 编程从初学到精通> 华清远见嵌入式培训中心 伍之昂等编著