二、变量

除了$ + 数字表示某个字段,awk还提供其他一些变量。

变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。

  1. $ echo 'this is a test' | awk '{print $NF}'
  2. test

$(NF-1)代表倒数第二个字段。

  1. $ awk -F ':' '{print $1, $(NF-1)}' demo.txt
  2. root /root
  3. daemon /usr/sbin
  4. bin /bin
  5. sys /dev
  6. sync /bin

上面代码中,print命令里面的逗号,表示输出的时候,两个部分之间使用空格分隔。

变量NR表示当前处理的是第几行。

  1. $ awk -F ':' '{print NR ") " $1}' demo.txt
  2. 1) root
  3. 2) daemon
  4. 3) bin
  5. 4) sys
  6. 5) sync

上面代码中,print命令里面,如果原样输出字符,要放在双引号里面。

awk的其他内置变量如下。

  • FILENAME:当前文件名
  • FS:字段分隔符,默认是空格和制表符。
  • RS:行分隔符,用于分割每一行,默认是换行符。
  • OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
  • ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
  • OFMT:数字输出的格式,默认为%.6g