2017-04-05 103 views
-2
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 

这是什么语法错误?箭头指向如果awk我的语法有什么问题?

+2

如果在'{}' –

+2

或者'awk'NF == 7 {print $ 1“:”$ 2“:”$ 4“:”$ 5,$ 7,$ 6; next} {print $ 1“:”$ 2“ :“$ 3”:“$ 4,$ 6,$ 5}” – jlliagre

回答

0

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

if是无效条件。您需要附上,在动作框:

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

或者,您可以为NF==7例如条件离开关if

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

二是用于测试NF更地道awk,其他内置变量或其他变量。

0

重写代码为:

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

,并开始阅读有效AWK编程,第4版,由阿诺德·罗宾斯。