awk中if else的语法错误

时间:2015-05-26 11:55:15

标签: awk

我正在尝试使用以下命令根据if else条件以及从第n列到最后一列的字段打印特定列。此命令未提供正确的输出。尝试这样时会抛出语法错误。当在外面单独尝试其他时,它会提供输出但不是正确的格式。

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 个答案:

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