未经初始化的变量是0或"",究竟是哪个则取决于它们被使用时的上下文。
所有由split函数创建的字段或数组元素都被视为字符串,除非它们只包含数字值。如果某个字段或数组元素为空,它的值就是空串。空行也可以被视为空串。
对变量赋值要使用awk的赋值运算符,见下表
++x 先递增运算符
x++ 后递增运算符
可以在命令行上对变量赋值,然后将其传递给awk脚本。
nawk提供的选项-v允许在BEGIN语句中处理命令行变量。从命令行传递的每个变量前面都必须加一个-v选项。
字段变量的值发生变化时,awk会以OFS的值作为字段分隔符重新计算$0变量的值。
内置变量的名字都是大写的,它们可以被用于表达式,也可以被重置,如下表所示:
ORS 输出记录分隔符
OFS 输出字段分隔符
FS 字段分隔符
NR 记录号
NF 字段数
OFMT 输出格式变量
$NF 最后一个字段
若gawk的内置变量IGNORECASE为非0值,则在正则表达式和字符串匹配中不区分大小写。
BEGIN模式后面跟了一个操作块。awk必须在对输入文件进行任何处理之前先执行该操作块。因为awk要在执行完BEGIN操作块后才开始读取输入。BEGIN操作常常被用于修改内置变量(OFS、RS、FS等)的值、为用户自定义变量赋初值和打印输出的页眉或标题。
END模式不匹配任何输入行,而是执行任何与之关联的操作。awk处理完所有输入行后才处理END模式。
重定向的目标文件名必须用双引号括起来。如果使用的重定向操作符为>则文件被打开并清空,文件一旦打开就会保持打开状态直至显示关闭或awk程序终止,此后print语句的输出都将追加到文件尾部。符号>>也用于打开文件,但是不清除文件内容,它只向文件追加内容。
getline函数用于从标准输入、管道或文件(非当前处理的文件)读取输入。getline函数用于读取下一输入行并且设置内置变量NF、NR和FNR。如果读到第一条记录,函数就返回1,如果读到EOF(end of file,文件末尾)则返回0。如果发生错误,比如打开文件失败,则getline函数返回-1。
如果在awk程序中打开了管道,就必须先关闭它才能打开另一个管道。管道符右边的命令被括在双引号之间。每次只能打开一个管道。
awk内置的system函数以UNIX/Linux的系统命令作为参数,执行该命令并且将命令的退出状态返回给awk程序。作为参数的UNIX/Linux命令必须加双引号。格式:system("UNIX Command")
阅读(3496) | 评论(0) | 转发(1) |