質問: bashでファイルを転置する効率的な方法 このようにフォーマットされた巨大なタブ区切りファイルがありますx column1 column2 column3 row1 0 1 2 row2 3 4 5 row3 6 7 8 row4 9 10 11 私はtransposebashコマンドのみを使用して効率的な方法でそれをしたいと思います(それを行うために10行程度のperlスクリプトを書くことができますが、ネイティブの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の解決策を見てきましたが、それでもまだ遅いです。何か考え/提案/素晴らしいアイデア? :-)
回答: ファイルから単一の(コンマ区切り)行$ nのみを取得して、列に変換する場合:head -$n file | tail -1 | tr ',' '\n'