awk我的语法出了什么问题?

时间:2017-04-05 20:32:23

标签: awk

awk 'if(NF==7){print$1":"$2":"$4":"$5, $7, $6}else {print$1":"$2":"$3":"$4, $6, $5}'
awk: if(NF==7){print$1":"$2":"$4":"$5, $7, $6}else {print$1":"$2":"$3":"$4, $6, $5}
awk: ^ syntax error

这里的语法错误是什么?箭头指向if

2 个答案:

答案 0 :(得分:0)

awk是一系列condition {action}语句。

if无效。您需要将其括在一个操作块中:

awk '{if(something) { do something } else { do something else }}'

或者,您可以暂停if以获取NF==7的条件,例如:

awk 'NF==7{ do something; next } { do something else }'

第二个用于测试awk,其他内置变量或其他变量的惯用NF更为惯用。

答案 1 :(得分:0)

将您的代码重写为:

awk '{print $1":"$2":" (NF==7 ? $4":"$5, $7, $6 : $3":"$4, $6, $5)}'

并开始阅读Arnold Robbins撰写的Effective Awk Programming,第4版。