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

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

Re: [shell-script] Inserir quebra de linha a cada N repetições de um pad


From: phfbettega
Subject: Re: [shell-script] Inserir quebra de linha a cada N repetições de um padrão.
Date: Sun, 31 Jan 2016 14:19:11 -0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

Olá pessoal, antes tarde do que nunca :)

sed -r "s/,\(([0-9]+),/\;\nINSERT INTO 'TABLE' VALUES \(\1,/5;P;D"

Tentei primeiro fazer um loop com os comando ':' e 't', mas depois percebi que
o próprio comando D já faz o loop, deletando a primeira linha do padrão 
(impressa
antes com P) e voltando ao início do sed com o restante da linha no espaço 
padrão.
Abraços Paulo Bettega

On 27-01-2016 12:22, Rodrigo Tenorio address@hidden [shell-script] wrote:
Caros camaradas de lista,

Tenho comigo um longo insert table de uma linha apenas [8M em txt] que meu 
computador limitado não
consegue processar de uma única vez. Eu gostaria de transformar essa única 
linha em muitas linhas da
seguinte forma:

Padrão:
INSERT INTO 'TABLE' VALUES (1,'Rio Branco','20 de 
Novembro','Sobral','69903-695','Rua'),(2,'Rio
Branco','A','Floresta','69906-350','Rua'),(3,'Rio Branco','A','Terminal Cadeia
Velha','69900-520','Rua'),(4,'Rio Branco','A','Jardim de 
Alah','69911-290','Rua'),(5,'Rio
Branco','A','Manoel Julião','69912-680','Rua'),(6,'Rio Branco','A','João
Eduardo','69904-665','Rua'),(7,'Rio Branco','Abacate','Morada do 
Sol','69910-310','Rua'),(8,'Rio
Branco','Abelhas','Santa Quitéria','69914-370','Rua'),(9,'Rio Branco','Absolon 
de
Almeida','Cerâmica','69900-430','Travessa'),(10,'Rio Branco','AC-040','Vila
Acre','69902-450','Rodovia');

Para:
INSERT INTO 'TABLE' VALUES (1,'Rio Branco','20 de 
Novembro','Sobral','69903-695','Rua'),(2,'Rio
Branco','A','Floresta','69906-350','Rua'),(3,'Rio Branco','A','Terminal Cadeia
Velha','69900-520','Rua'),(4,'Rio Branco','A','Jardim de 
Alah','69911-290','Rua'),(5,'Rio
Branco','A','Manoel Julião','69912-680','Rua');
INSERT INTO 'TABLE' VALUES (6,'Rio Branco','A','João 
Eduardo','69904-665','Rua'),(7,'Rio
Branco','Abacate','Morada do Sol','69910-310','Rua'),(8,'Rio 
Branco','Abelhas','Santa
Quitéria','69914-370','Rua'),(9,'Rio Branco','Absolon de
Almeida','Cerâmica','69900-430','Travessa'),(10,'Rio Branco','AC-040','Vila
Acre','69902-450','Rodovia');

Assim com um loop em shell eu pretendo executar linha a linha.
Bom a parte do LOOP eu domino, mas meu conhecimento limitado em SED não me 
ajudou.

Como TESTE tentei:
sed "s/\(([0-9]*,\(.*,\)\{3\}[0-9'-]\{11\},.*),\)\{2\}/\nTESTE &/g"
Mas o resultado foi apenas uma linha em branco e a segunda com "TESTE" seguido 
do restante da linha.

Precisava de uma força.

Grato,
Rodrigo Boëchat


----------------------------------------------------------------------------------------------------
Enviado por: Rodrigo Tenorio <address@hidden>
----------------------------------------------------------------------------------------------------


reply via email to

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