使用awk排列列

时间:2014-03-13 04:43:32

标签: awk multiple-columns

我尝试使用awk从210列的数据集中拉出每第9列。如果每列中的数据不包含相同数量的字符,如何使列均匀排列?

1 个答案:

答案 0 :(得分:0)

使用for loop跳过您不需要的列:

awk '{
    for(i=1;i<=8;i++) {
        printf "%s%s",$i,FS
    }
    for(i=10;i<=NF;i++) {
    printf "%s%s",$i,(i==NF?RS:FS)
    }
}' file

注意:请相应地设置字段分隔符。你没有说明它是什么,所以我默认(即空间)

样品测试:(跳过第3栏)

$ cat file
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6

$ awk '{
    for(i=1;i<=2;i++) {
        printf "%s%s",$i,FS
    }
    for(i=4;i<=NF;i++) {
    printf "%s%s",$i,(i==NF?RS:FS)
     }
}' file
1 2 4 5 6
1 2 4 5 6
1 2 4 5 6