awk:打印某些列和一系列连续的列

时间:2017-08-25 06:21:22

标签: awk

如果我想要打印,比如第四列,直到第十列,我可以使用:

awk '{for( i=4; i<=10; i++ ){printf( "%s ", $i )}; printf( "\n"); }

但是,如果我想打印第1,3列,然后是4-10,然后是12,该怎么办?

2 个答案:

答案 0 :(得分:2)

awk 解决方案:

awk '{ for(i=1;i<=12;i++) if(i!~/^(2|11)$/) printf "%s ",$i; print "" }' file
  • if(i!~/^(2|11)$/) - 确保它不是第2或第11个字段。您可以将交替组(2|11|...)扩展为应跳过的多个字段编号

答案 1 :(得分:1)

请尝试以下操作并告诉我这是否有帮助。

awk '{printf("%s %s",$1,$3);for( i=4; i<=10; i++ ){printf( "%s ", $i )}; printf(" %s\n",$12);}'  Input_file