divide o arquivo com base no primeiro dígito da linha

0

Eu tenho um arquivo que é cerca de 10 shows e, portanto, não pode ser processado no meu excel amado. Eu preciso cortar esse arquivo em várias partes com base no primeiro número. Por exemplo, o arquivo se parece com algo assim.

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

onde os pontos representam o fato de que existem aproximadamente 200 linhas seguindo com 0.213. O que eu realmente quero alcançar é que eu use awk, csplit ou algo parecido. para dividir esse arquivo enorme em vários arquivos menores baseados puramente no primeiro número. então ..... 0.213 e 0.653 devem ser colocados em um arquivo e 1.213 e o que vem a seguir que começa com 1.xxx no próximo arquivo.

    
por Zak.M 24.04.2018 / 11:06

1 resposta

1

Com awk , você faria:

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

Observe que as linhas de 10.123 entrarão em output1.txt da mesma forma que as linhas de 1.123 ou 11.123 , 123123.123 ...

Como alternativa, você pode fazer:

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

Para que os arquivos sejam nomeados com base no conteúdo da linha até o primeiro . ou ; (linhas começando com 10.123;... ou 10;... entrando em output10.txt ).

    
por 24.04.2018 / 11:12