awk之NF的妙用
在awk中大家都知道NF的作用,它是一个awk的内建变量,代表是每行的字段数量。常用的几种方式我给大家慢慢到来。最多的就是在读取每个字段内容 for(i=1;i<=NF;i++) 这个运用非常之多。我们看看高级的几个高级用法:
- $ cat file
- a b c d
- 1 2 3 4
- $ awk -vOFS="|" 'NF+=0' file
- a|b|c|d
- 1|2|3|4
[解析]
替换字段分割符,必须要对字段有个action才能使OFS生效,这里我们运用 NF+=0 的方法,即有了操作,而并为改变其原有的值,很巧妙吧。
- $ cat file
- aa
- bb
- cc
- dd
- $ awk NF file
- aa
- bb
- cc
- dd
[解析]
排除空行,因为空行NF=0,0为假不会打印该行。
- cat file
- a b c d e f
- 1 2 3 4
- awk 'NF-=2' file
- a b c d
- 1 2
- awk '{for(i=3;i<NF;i++)printf("%s ",$i);print $NF}' file
- c d e f
- 3 4
[解析]
不输出后面2个字段和前面2个字段。