如何根据列数拆分文件?

如何根据列数拆分文件?

我有一个包含数字数据的文件。每行都有不同数量的列。我想根据一行中的列数将文件拆分为多个文件。每行可能有 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

它将分成 3 个文件,分别是 xaa、xab、xcc 现在我们重命名 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;

相关内容