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
答案 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版。