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

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

Re: [shell-script] Separar Colunas com quantidade incerta


From: Jonathan Lessa
Subject: Re: [shell-script] Separar Colunas com quantidade incerta
Date: Tue, 12 Jul 2011 12:32:26 -0300

Com o sed você consegue sim, basta delimitar os padrões, neste caso vc cria
grupos:
num = (do inicio até o primeiro espaço em branco)
Nome = (o que vem depois do 'num') ou (o que se inicia com uma letra) até um
espaço seguido de um número
as notas = numero com 1 ou 2 digitos seguidos de uma virgula e com mais dois
digitos
resultado = (tudo depois das notas) ou (o que tem um número seguido de um
espaço) seguido de uma letra até o final da linha

Ex.:
$ linha="170.00259604/3 JOSE LUIZ MOREIRA 10,00 1,00 11,00 24,00 46,00
ELIMINADO 4.1.9"

$ num=$(echo $linha | sed -r 's/(^.*\/[0-9]) ([a-zA-Z].*)
([0-9]{1,2},[0-9]{2}) ([0-9]{1,2},[0-9]{2}) ([0-9]{1,2},[0-9]{2})
([0-9]{1,2},[0-9]{2}) ([0-9]{1,2},[0-9]{2}) ([a-zA-Z].*$)/\1/g')

$ nome=$(echo $linha | sed -r 's/(^[0-9].*\/[0-9]) ([a-zA-Z].*)
([0-9]{1,2},[0-9]{2}) ([0-9]{1,2},[0-9]{2}) ([0-9]{1,2},[0-9]{2})
([0-9]{1,2},[0-9]{2}) ([0-9]{1,2},[0-9]{2}) ([a-zA-Z].*$)/\2/g')

$ echo $num
170.00259604/3

$ echo $nome
JOSE LUIZ MOREIRA

$ echo $resultado
ELIMINADO 4.1.9


Se quiser separar as notas e diminur a linha de comando pode usar:

$ notas=$(echo $linha | sed -r 's/(^.*\/[0-9]) ([a-zA-Z].*[a-zA-Z])
([0-9]{1,2},[0-9]{2} .*) ([a-zA-Z].*$)/\3/g')


Ps.: Não posto em AWK pq ainda não estou familiarizado com o mesmo

Att.:
Jonathan Lessa
Em 12 de julho de 2011 11:47, César Vianna <address@hidden>escreveu:

> **
>
>
> Caros, tenho que separar as seguintes colunas em um arquivo no padrão
> abaixo.
>
> O problema é que os nomes tem quantidades de palavras diferentes. Daí não
>
> pra usar o cut e não consegui fazer uma regexp pro sed.
>
> O padrão é:
> num;nome;nota1;2;3;4;5;resultado
>
> 170.00259604/3 JOSE LUIZ MOREIRA 10,00 1,00 11,00 24,00 46,00 ELIMINADO
> 4.1.9
> 170.00285361/7 JOSELIO RICARDO NUNES COELHO 6,00 0,00 4,00 9,00 19,00
> ELIMINADO 4.1.9
> 170.00242788/9 JULIANO DA SILVA CHAVES 8,00 1,00 7,00 21,00 37,00 ELIMINADO
> 4.1.9
> 170.00254924/0 LEANDRO DO NASCIMENTO SAMORA 8,00 2,00 9,00 30,00 49,00
> ELIMINADO 4.1.9
> 170.00263869/8 MARCELA GOUVEIA FERRAZ 10,00 5,00 6,00 9,00 30,00 ELIMINADO
> 4.1.9
> 170.00237205/9 MARCELO ALVES DRUMMOND DE OLIVEIRA 12,00 4,00 5,00 42,00
> 63,00 HABILITADO ITEM 4.3.3
> 170.00239439/7 MARCOS ANTONIO LIMA 8,00 3,00 3,00 12,00 26,00 ELIMINADO
> 4.1.9
> 170.00240727/2 MARINA DE OLIVEIRA PEREIRA 10,00 1,00 1,00 9,00 21,00
> ELIMINADO 4.1.9
> 170.00283022/0 MEI YUNG KO 10,00 3,00 6,00 9,00 28,00 ELIMINADO 4.1.9
> 170.00261006/2 PHILIP TEIXEIRA ROCHA 8,00 1,00 6,00 15,00 30,00 ELIMINADO
> 4.1.9
> 170.00265535/0 RODRIGO JOSE BUENO 12,00 1,00 7,00 3,00 23,00 ELIMINADO
> 4.1.9
> 170.00280447/0 SIRLANE DE ARAUJO CAMURCA FERNANDES 10,00 3,00 6,00 24,00
> 43,00 ELIMINADO 4.1.9
> 170.00237871/9 VALDECI ANTONIO DE SOUZA 2,00 2,00 4,00 18,00 26,00
> ELIMINADO
> 4.1.9
> 170.00252405/5 WAGNER ALVES RIBEIRO MAIA 16,00 5,00 6,00 33,00 60,00
> HABILITADO ITEM 4.3.3
> 170.00266490/0 ABELARDO DE JESUS 6,00 2,00 3,00 18,00 29,00 ELIMINADO 4.1.9
> 170.00252228/6 ABNER AUGUSTO VIANA THOMAZ 6,00 3,00 3,00 24,00 36,00
> ELIMINADO 4.1.9
> 170.00271565/4 ABNER VISCONTI VIEIRA 8,00 3,00 10,00 30,00 51,00 ELIMINADO
> 4.3.4
>
> Abraço,
> --
> César Vianna
> -------------------
> Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às
> unidades; os agenciamentos móveis aos sistemas.
> Gilles Deleuze & Felix Guattari
> ******************************************************
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



-- 
Att.:
Jonathan Lessa


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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