shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Formatar aquivo


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Formatar aquivo
Date: Thu, 29 May 2008 14:58:54 -0300

ok, isso foi divertido:

$ cat in
SPNT 962
570 1485 1364 1944 2176 2417 2986 2980
3504 3362 4034 3745 4660 4176 5094 4489
5344 4600 5730 4718 8090 4962
SPNT 1122
514 1485 672 1520 1652 2111 2176 2417
2986 2980 3504 3362 4034 3745 4660 4176
5032 4433 5370 4614 5730 4718 8090 4962
SPNT 1282
514 1485 672 1520 1652 2111 2184 2431
2986 2980 3504 3362 4034 3745 4660 4176
5032 4433 5298 4593 5914 4739 8090 4962

$ tr '\n' ' ' < in | sed -r 's/SPNT[ \t]+[0-9]+[ \t]+/\n&\n/g' | sed
-r '/SPNT/!s/([0-9]+[ \t]*){1,10}/VELF &\n/g' | sed '/[0-9]/!d'
SPNT 962
VELF 570 1485 1364 1944 2176 2417 2986 2980 3504 3362
VELF 4034 3745 4660 4176 5094 4489 5344 4600 5730 4718
VELF 8090 4962
SPNT 1122
VELF 514 1485 672 1520 1652 2111 2176 2417 2986 2980
VELF 3504 3362 4034 3745 4660 4176 5032 4433 5370 4614
VELF 5730 4718 8090 4962
SPNT 1282
VELF 514 1485 672 1520 1652 2111 2184 2431 2986 2980
VELF 3504 3362 4034 3745 4660 4176 5032 4433 5298 4593
VELF 5914 4739 8090 4962

1) com tr eu troco os caracteres nova-linha por espaços
2) no primeiro SED eu separo a parte SPNT xxx dos numeros
3) no segundo sed eu separo os numeros em até 10 colunas
4) no ultimo sed eu removo as linhas em branco

Basicamente é vc massagear esse texto ate q fique como vc quer, mas
não sei como fazer num unico sed q não seja bizarro.

Preciso de uma cerveja...
2008/5/28 Jeferson <address@hidden>:
> Olá pessoal,
>
> Eu já estou há mais de 3 horas tentando formatar esse arquivo de
> entrada da mesma forma que o de saída. O problema é que o arquivo é
> muito grande, eu coloquei apenas algumas linhas aqui, e as colunas
> com os valores numéricos não são sempre preenchidas igualmente. To
> tentando fazer em c++. Alguém tem idéia de como fazer isso em shell
> script?
> Agradeço.
>
> Arquivo de entrada:
> ----------------------------------------------
> SPNT 962
> 570 1485 1364 1944 2176 2417 2986 2980
> 3504 3362 4034 3745 4660 4176 5094 4489
> 5344 4600 5730 4718 8090 4962
> SPNT 1122
> 514 1485 672 1520 1652 2111 2176 2417
> 2986 2980 3504 3362 4034 3745 4660 4176
> 5032 4433 5370 4614 5730 4718 8090 4962
> SPNT 1282
> 514 1485 672 1520 1652 2111 2184 2431
> 2986 2980 3504 3362 4034 3745 4660 4176
> 5032 4433 5298 4593 5914 4739 8090 4962
> SPNT
> ----------------------------------------------
> Arquivo de saida:
> ----------------------------------------------
> SPNT 962
> VELF 0 1485 1364 1944 2176 2417 2986 2980 3504 3362
> VELF 4034 3745 4660 4176 5094 4489 5344 4600 5730 4718
> VELF 8090 4962
> SPNT 1122
> VELF 514 1485 672 1520 1652 2111 2176 2417 2986 2980
> VELF 3504 3362 4034 3745 4660 4176 5032 4433 5370 4614
> VELF 5730 4718 8090 4962
> SPNT 1282
> VELF 514 1485 672 1520 1652 2111 2184 2431 2986 2980
> VELF 3504 3362 4034 3745 4660 4176 5032 4433 5298 4593
> VELF 5914 4739 8090 4962
>
> 



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

[Prev in Thread] Current Thread [Next in Thread]