У меня есть огромный файл с разделителями разделов, отформатированный таким образом
X column1 column2 column3
row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11
Я хотел бы эффективно его транспонировать, используя только команды bash (я мог бы написать десять или около того строк Perl script для этого, но он должен быть медленнее для выполнения, чем собственные bash функции). Таким образом, результат должен выглядеть как
X row1 row2 row3 row4
column1 0 3 6 9
column2 1 4 7 10
column3 2 5 8 11
Я думал о таком решении
cols=`head -n 1 input | wc -w`
for (( i=1; i <= $cols; i++))
do cut -f $i input | tr $'\n' $'\t' | sed -e "s/\t$/\n/g" >> output
done
Но он медленный и не кажется наиболее эффективным решением. Я видел решение для vi в этом сообщении, но он все еще слишком медленный. Любые мысли/предложения/блестящие идеи?: -)