根据行中第一个数字分割文件

根据行中第一个数字分割文件

我有一个大约 10 GB 的文件,因此无法在我心爱的 Excel 中处理它。我需要根据第一个数字将该文件切成多个部分。例如,该文件看起来像这样。

0.213;89;230;0.1234    
0.213;323;650;0.3500    
0.213;8234;10;0.7863
...
0.653;89;230;0.1234    
0.653;323;650;0.3500    
0.653;8234;10;0.7863
..
1.213;89;230;0.1234
1.213;323;650;0.3500
1.213;8234;10;0.7863

其中点表示 0.213 后面大约有 200 行。我真正想要实现的是我使用 awk、csplit 或类似的东西。纯粹根据第一个数字将这个大文件分割成多个较小的文件。所以..... 0.213 和 0.653 应放在一个文件中,而 1.213 以及以 1.xxx 开头的任何内容应放在下一个文件中。

答案1

有了awk,你会这样做:

awk '{file = "output" substr($0, 1, 1) ".txt"; print > file}' < input.txt

请注意, for 的行将像or , ...的行一样10.123进入。output1.txt1.12311.123123123.123

或者,你可以这样做:

awk -F'[.;]' '{file = "output" $1 ".txt"; print > file}' < input.txt

.对于要根据第一个或之前的行的内容命名的文件;(以 开头10.123;...10;...进入的行output10.txt)。

相关内容