An efficient way to transpose a file in Bash

前端 未结 29 2102
时光说笑
时光说笑 2020-11-22 03:30

I have a huge tab-separated file formatted like this

X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11

I would like t

29条回答
  •  [愿得一人]
    2020-11-22 04:01

    An awk solution that store the whole array in memory

        awk '$0!~/^$/{    i++;
                      split($0,arr,FS);
                      for (j in arr) {
                          out[i,j]=arr[j];
                          if (maxr

    But we may "walk" the file as many times as output rows are needed:

    #!/bin/bash
    maxf="$(awk '{if (mf

    Which (for a low count of output rows is faster than the previous code).

提交回复
热议问题