在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个字段。