An efficient way to transpose a file in Bash

前端 未结 29 2103
时光说笑
时光说笑 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 03:56

    #!/bin/bash
    
    aline="$(head -n 1 file.txt)"
    set -- $aline
    colNum=$#
    
    #set -x
    while read line; do
      set -- $line
      for i in $(seq $colNum); do
        eval col$i="\"\$col$i \$$i\""
      done
    done < file.txt
    
    for i in $(seq $colNum); do
      eval echo \${col$i}
    done
    

    another version with set eval

提交回复
热议问题