在awk中大家都知道NF的作用,它是一个awk的内建变量,代表是每行的字段数量。常用的几种方式我给大家慢慢到来。最多的就是在读取每个字段内容 for(i=1;i<=NF;i++) 这个运用非常之多。我们看看高级的几个高级用法:

  1. $ cat file 

  2. a b c d

  3. 1 2 3 4

  4. $ awk -vOFS="|" 'NF+=0' file 

  5. a|b|c|d

  6. 1|2|3|4

[解析]

  替换字段分割符,必须要对字段有个action才能使OFS生效,这里我们运用 NF+=0 的方法,即有了操作,而并为改变其原有的值,很巧妙吧。

 

  1. $ cat file 

  2. aa

  3. bb


  4. cc


  5. dd

  6. $ awk NF file 

  7. aa

  8. bb

  9. cc

  10. dd

[解析]

  排除空行,因为空行NF=0,0为假不会打印该行。

 

 

 

  1. cat file 

  2. a b c d e f

  3. 1 2 3 4

  4. awk 'NF-=2' file

  5. a b c d

  6. 1 2

  7. awk '{for(i=3;i<NF;i++)printf("%s ",$i);print $NF}' file

  8. c d e f

  9. 3 4

 

[解析]

  不输出后面2个字段和前面2个字段。