列数に基づいてファイルを分割する方法は?

列数に基づいてファイルを分割する方法は?

数値データを含むファイルがあります。各行には異なる数の列があります。行の列数に応じて、ファイルを複数のファイルに分割したいと思います。各行には1〜10個の列を含めることができます。

以下は入力例です。

file.txt
23 53;
34;
31 45 67;
46 78 95;
34 17;
19;
37 65 83;

目標出力

file_1column.txt
34;
19;

file_2column.txt
23 53;
34 17;

file_3column.txt
31 45 67;
46 78 95;
37 65 83;

ベストアンサー1

"file_" andawkを使用して、固定文字列 "column.txt"を各入力レコードまたは行のフィールドまたは列の数を含む内部変数に関連付けて、目的のファイル名をNF作成します。

awk '{print > "file_" NF "column.txt"}' file.txt

結果:

$ head file_?column.txt
==> file_1column.txt <==
34;
19;

==> file_2column.txt <==
23 53;
34 17;

==> file_3column.txt <==
31 45 67;
46 78 95;
37 65 83;

おすすめ記事