2015-05-26 31 views
-1

我用下面的命令试图语法错误打印,如果其他条件,以及从第n列字段到最后基于特定列。该命令不会提供正确的输出。当这样尝试时会引发语法错误。如果每个人在外面都尝试过,它会给出输出,但格式不正确。与其他如awk中

paste file1 file2 | awk '{if($1 != "NULL" && $2 != "NULL") print $3,$1,$4,$5,$2,$6;for (i = 7; i <= NF; i++) { printf("%s ", $i); } printf("\n") ; 
           else if($1 != "NULL" && $2 == "NULL") print $3,$1,$4,$5,$6,$7;for (i = 8; i <= NF; i++) { printf("%s ", $i); } printf("\n");}' 
+1

您是否在点击“发送”按钮之前查看了自己的问题?或者你认为你的问题看起来不错? – hek2mgl

+0

您需要添加一个输入样本和相应的期望输出,以便我们可以看到您要做什么。 –

回答

0

编辑与正确答案

我有一个更容易阅读的方式写在下面,所以你可以看到括号应该开始和结束。随意将它放在一行上。

awk '{ 
      if($1 != "NULL" && $2 != "NULL"){ 
       printf("%s %s %s %s %s %s %s", $3,$4,$1,$5,$6,$2,$7) 
       for (i = 7; i <= NF; i++){ 
         printf("%s ", $i) 
       } 
       printf("\n") 
      } 
      else if($1 != "NULL" && $2 == "NULL"){ 
       printf("%s %s %s %s %s %s %s", $3,$4,$1,$5,$6,$7,$8) 
       for (i = 8; i <= NF; i++){ 
        printf("%s ", $i) 
       } 
       printf("\n") 
      } 
     }' file