csv 複数の列を単一の列に変換

csv 複数の列を単一の列に変換

複数の列があり、ヘッダーのない1つのCSVデータがあります。

5,-3,0
3,2,5
-2,4,4
0,2,1
2,-1,-2

それから最初の列から始めて単一の列に置き換えたいと思います。予想される出力は次のとおりです。

 5
 3
-2
 0
 2
-3
 2
 4
 2
-1
 0
 5
 4
 1
-2

この問題を解決する方法を知っている人はいますか?

私がしたことは、Excel式を使用することでした。=INDEX($A$1:$C$4,1+INT((ROW(A1)-1)/COLUMNS($A$1:$C$4)),MOD(ROW(A1)-1+COLUMNS($A$1:$C$4),COLUMNS($A$1:$C4))+1)単一の列で終わりますが、最初の行から始まります。

スクリプトを使用するなど、より高速な方法を探しています。

ベストアンサー1

入力ファイルが完全に大きくなく(たとえば、数百万のフィールドを含む数百万行)、メモリに入ることができると仮定して、すべてのUnixシステムのすべてのシェルでawkを使用してください。

$ awk -F',' '
    { for (i=1; i<=NF; i++) a[NR,i]=$i }
    END { for (i=1; i<=NF; i++) for (j=1; j<=NR; j++) print a[j,i] }
' file
5
3
-2
0
2
-3
2
4
2
-1
0
5
4
1
-2

おすすめ記事