数値データを含むファイルがあります。各行には異なる数の列があります。行の列数に応じて、ファイルを複数のファイルに分割したいと思います。各行には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_" and
awkを使用して、固定文字列 "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;
答え2
次のコマンドを使用することもできます。
注文する
split -l 3 file.txt
xaa、xab、xccという3つのファイルに分けられます。これで、xaa==: file_xaaなどに名前を変更します。
ls -ltr xa*| awk '{print "mv" " " $NF " " "file_"$NF}'| sh
n@praveen:~$ cat file_xaa
23 53;
34;
praveen@praveen:~$ cat file_xab
31 45 67;
46 78 95;
34 17;
praveen@praveen:~$ cat file_xac
19;
37 65 83;