分类:
2009-02-08 14:43:32
|
输出为
|
|
kenshinsee2009-02-25 21:39:15
aix下NF=NF还是$1=$1都无法实现功能,可能太老了ksh版本 我想这次我理解应该正确了吧,其实完整写法应该是 awk 'BEGIN{RS="#";OFS=","}{NF=NF;if(NF){print $0}}' file 没有action的NF=NF和NF=NF;if(NF){print $0}是等价的 其实赋值这步也可以这样明显看出 awk 'BEGIN{RS="#";OFS=","}{$10=$10;if(NF){print $0}}' file 字段不足10的全部为空,以逗号分隔 谢谢BZ,有不懂还会来问哦,呵呵
kenshinsee2009-02-25 09:31:37
那是就是说NF=NF替换成一个NF也是等价的呢 awk 'BEGIN{RS="#";OFS=","}NF' file 由于公司是AIX的老版本ksh,貌似上面例子都无法得到正确答案,回家再试试
ywlscpl2009-02-25 07:38:37
---------------- $n=$n,n一定要小于等于字段数,不然字段数小于n的行不会被显示出来 ---------------- 并不是你理解的这样 $n=$n等价于$n{print},如果n>字段数,$n为空,即为0,后面的action{print}不执行。NF=NF亦同理等价于NF{print} 这个在我心的笔记第2点中有讲 --------- awk 'var=xx' awk省略action的写法,默认action就是{print},但稍有特殊,其执行了var=xx的赋值操作,并且用xx作为pattern。 ---------