如何用AWK选择一些列?

时间:2012-01-23 14:48:41

标签: linux awk

我想在文件中选择一些列并在其上运行一些命令。 所以我的脚本就是这个

awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$19}' test.txt > outpot.txt

但这会将其打印到另一个文件,我试图这样做

awk '{print $1,$2,$3,$4,$5,$6,$7,$9,$10,$11,$12,$13,$14,$15,$16}' test.txt | next commands

(这个命令工作正常!我做错了,我不知道如何删除这个问题)

是否可以缩短此命令,而不是只写$1-7 && $9-15 && $19来写所有列(但这并不重要,我只是想知道它是否可行)。最主要的是能够选择那些列

2 个答案:

答案 0 :(得分:2)

要回答问题的一部分,请在awk脚本中执行以下操作:

{
   for (i=1; i<=7; i++)
      print $i;
   for (i=9; i<=15; i++)
      print $i;
   print $19;
}

答案 1 :(得分:2)

根据glennjackman's建议进行了更新:

awk '{for (i=1;i<=NF;i++) if ((1<=i && i<=7) || (9<=i && i<=15) || i==19) printf("%s ", $i); print ""}' file