常用变量作用
$0 | 当前记录(这个变量中存放着整个行的内容) |
$1~$n | 当前记录的第n个字段,字段间由FS分隔 |
FS | 输入字段分隔符 默认是空格或Tab |
NF | 当前记录中的字段个数,就是有多少列 |
NR | 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。 |
FNR | 当前记录数,与NR不同的是,这个值会是各个文件自己的行号 |
RS | 输入的记录分隔符, 默认为换行符 |
OFS | 输出字段分隔符, 默认也是空格 |
ORS | 输出的记录分隔符,默认为换行符 |
FILENAME | 当前输入文件的名字 |
双引号及运算判定
[root@www ~]# echo 123|awk "{print bash}"
(打印空值)[root@www ~]# echo 123|awk "{print -bash}"
0 (打印0)
原因
双引号会翻译print 里的$。
无论有没有"-",bash都是变量,只不过是awk变量,不是shell的,因为awk变量没有类型一说,awk会根据上下文来自动判断该变量是字符串还是数字,所以如果一个awk变量没有定义就直接打印,它就被初始化为空值,打印空值;如果参加算术运算,那就会被初始化为0。