複数の行を複数の列に置き換えます。

複数の行を複数の列に置き換えます。

私のデータは複数の行にあり、それをタブで区切られた複数の列に置き換えたいと思います。

ABC 0.98 0.58 5.87 0.01
DEF 0.88 5.85 6.89 0.25
GHI 8.99 5.66 4.78 6.22

入力する

ABC DEF GHI
0.98 0.88 8.99
0.58 5.85 5.66
5.87 6.89 4.78
0.01 0.25 6.22

上記の形式で出力を取得できるように、この問題を解決するのに役立ちますか?

ベストアンサー1

GNUの使用datamash:

$ datamash -W transpose <file
ABC     DEF     GHI
0.98    0.88    8.99
0.58    5.85    5.66
5.87    6.89    4.78
0.01    0.25    6.22

datamashこれは、スペースで区切られた行をタブ区切りの列に置き換えるために使用されます。

このオプションを使用して他の出力区切り文字を設定できます--output-delimiter。ここでは、予想される出力を再現するように見えるスペースを使用しました。

$ datamash -W --output-delimiter=' ' transpose <file
ABC DEF GHI
0.98 0.88 8.99
0.58 5.85 5.66
5.87 6.89 4.78
0.01 0.25 6.22

おすすめ記事