将列表转换为表格

时间:2014-11-26 10:41:28

标签: awk formatting string-formatting tabular

我想创建一个列表中的表格。 这是输入:

Cluster 0
Sequenz 1 
Sequenz 2
Cluster 1
Sequenz 3
Cluster 2
Sequenz 4
sequenz 5
Sequenz 6
Sequenz 7

我希望输出采用表格格式,其中第一列以标题标签" Cluster 0"开头。在下面的行中有顺序1和2.下一列以" Cluster 1"开头。并且下面的行中有Sequenz 3,依此类推。

什么方法和语言最适合这个?

1 个答案:

答案 0 :(得分:1)

不清楚你对输出的喜好。有人这样吗?

awk '
/Cluster/ {
    c=$2
    col++
    b=1
    next}
    {
    data[c FS b++]=$2
    row=row<b?b:row} 

END {
    for (i=0;i<col;i++) 
        printf "%-12s","cluster "i
    print ""
    for (j=1;j<row;j++) {
        for (i=0;i<col;i++) printf "%-12s",data[i FS j]
        print ""}
    }
' file

cluster 0   cluster 1   cluster 2
1           3           4
2                       5
                        6
                        7

这会将所有数据存储到数组data中,然后将其打印出来。