awk中的变量定义非常简单,只需要给出一个变量名并且赋予适当的值即可。
awk中的常规变量分为两种类型:字符串和数值。无需指定变量类型,awk会根据变量所处的环境自动判断。如果没有指定值,数值类型的变量默认等于0,字符串类型的变量默认为空。
awk中的系统内置变量总结如下,有一点要事先说明:awk说明中,记录表示一个样本,字段表示特征。
变量 | 说明 |
$0 | 记录变量,表示当前正在处理的记录,整条记录作为一个字符串 |
$n | 字段变量,n可以为1,2,...表示第几个字段(特征) |
NF | 整数值,表示当前记录的字段数 |
NR | 整数值,表示awk已经读入的记录数 |
FILENAME | 正在处理的文件名 |
FS | 字段分割字符,默认是空格或是tab |
RS | 记录分隔符,默认是换行符 |
说明:$0是当前处理的一整条记录(包含多个字段),而且作为字符串处理;上面已经用过$2;FS和RS比较有用,下面单独说明。
RS是文件中记录换行的标识,默认为\n换行符,但是有些文件不是用换行来记录的,这个时候需要自己设置。注意设置的时候最好使用BEGIN匹配模式,还记得吗?BEGIN模式优先于所有处理文件之上执行,我们必须先设置换行标识,然后再处理文件。
#-----------------------------/chapter11/ex11-14.sh------------------ #! /bin/awk -f BEGIN { #定义记录分隔符 RS="" } { print print "==========================================" }
FS是文件中的字段分隔标识符,默认是空格或制表符tab,实际上我们可能使用其他的字符。我们同样在BEGIN匹配模式中指定。
#-----------------------------/chapter11/ex11-15.sh------------------ #! /bin/awk -f BEGIN { #定义记录分隔符 RS="" #定义字段分隔符 FS="\n" } #输出第1个字段 { print $1 }
参考:
《Shell从入门到精通》
原文地址:http://blog.csdn.net/puqutogether/article/details/45865865