行の最初の数字に基づいてファイルを分割する

行の最初の数字に基づいてファイルを分割する

約10GBのファイルがあるので、私が愛する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

点は、約200行以降の0.213を表します。私が本当に達成したいのは、awk、csplitなどを使用することです。この大きなファイルを純粋に最初の数字に基づいて複数の小さなファイルに分割します。だから..... 0.213と0.653は1つのファイルに入る必要があります。

答え1

これにより、awk次のことができます。

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

for行はfor or、...行のように入ります10.123output1.txt1.12311.123123123.123

または、次のことができます。

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

.最初の行または前の行(で始まるまたは入力する;行)の内容に基づいてファイル名を指定します。10.123;...10;...output10.txt

関連情報