Chinaunix
标题:
如何理解awk 'BEGIN{OFS="\n"}{$1=$1;print $0}'
[打印本页]
作者:
carllai
时间:
2013-11-21 11:57
标题:
如何理解awk 'BEGIN{OFS="\n"}{$1=$1;print $0}'
比如例子, 要将空格分隔开的4个数字按照提行的方式打印,
echo 1 2 3 4 | awk 'BEGIN{OFS="\n"}{$1=$1;print $0}',
OFS改变以换行符为分隔符,这个还能理解, 后面的操作部分,{$1=$1;print $0}, 打印$0可以理解,但是$1=$1是什么意思?
这个还有另外一个写法,echo 1 2 3 4 | awk 'BEGIN{OFS="\n"}{NF+=0;print $0}', 如何理解NF+=0
作者:
reyleon
时间:
2013-11-21 12:01
为了使OFS的设置生效,需要改变 $0 ,这里我们是对 awk 撒了个小谎
$1=$1 或者 NF+=0, $0 本身的内容实际上没有任何改变,只是为了使 OFS 的设置生效
去看看:
http://bbs.chinaunix.net/thread-1790335-1-1.html
作者:
yestreenstars
时间:
2013-11-21 12:17
如果我们不对字段进行操作的话,就算改变了OFS,最后的输出结果还会是原来的样子,$1=$2和NF+=0的目的就是对字段进行操作,同时保证不改变字段的内容。
作者:
zooyo
时间:
2013-11-21 12:56
提示:
作者被禁止或删除 内容自动屏蔽
作者:
carllai
时间:
2013-11-21 13:19
感谢各位。
作者:
rdcwayx
时间:
2013-11-21 13:46
可以缩减成
echo 1 2 3 4 | awk 'BEGIN{OFS="\n"}$1=$1'
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2