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

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

Re: [shell-script] sed replace na primeira e segunda ocorrência após str


From: Luiz Alberto
Subject: Re: [shell-script] sed replace na primeira e segunda ocorrência após string
Date: Thu, 29 Mar 2018 10:40:19 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

Em 28/03/2018 16:22, address@hidden [shell-script] escreveu:
 

Olá pessoal, tudo bem?

Preciso de uma ajuda. Tenho uma string e preciso fazer algumas substituições.

A string está estruturada assim:

ADDITEM=(número entre 1 e 99999),(número entre 1 e 99999),(qualquer caractere alfanumérico ou não, visível,incluindo ponto,vírgula, exclamação, interrogação, etc)&(repetição do padrão iniciando com ADDITEM)

Esta é a string original:

ADDITEM=24720,1,BITS PHIL.CTPOHR N2 X  70MM C/10&ADDITEM=24722,1,BITS PHIL.CTPOHR N2 X 127MM C/10&ADDITEM=24723,1,BITS PHIL.CTPOHR N2 X 150MM C/10&ADDITEM=24724,1,BITS PHIL.CTPOHR TITAN.2X25MM C/10&ADDITEM=24725,1,BITS PHIL.CTPOHR TITAN.2X50MM C/10&ADDITEM=14862,10,BITS PHIL.MAKITA N,1 X 25MM / 656&ADDITEM=14863,20,BITS PHIL.MAKITA N,2 X 25MM / 657&ADDITEM=20026,20,BITS PHIL.MAKITA N,3 X 25MM / 65 &ADDITEM=14865,10,BITS PHIL.MAKITA N.1 X 50MM / 666&ADDITEM=14866,10,BITS PHIL.MAKITA N.2 X 50MM / 667

Preciso substituir a primeira e a segunda vírgula após ADDITEM, ambas por </td><td>

Não posso simplesmente pedir ao sed para substituir todas as vírgulas pois há produtos que tem vírgula na descrição.

Ao final a string ficará assim:

<tr><td>24720</td><td>1</td><td>BITS PHIL.CTPOHR N2 X  70MM C/10</td><td>24722</td><td>1</td><td>BITS PHIL.CTPOHR N2 X 127MM C/10</td><td>24723</td><td>1</td><td>BITS PHIL.CTPOHR N2 X 150MM C/10</td><td>24724</td><td>1</td><td>BITS PHIL.CTPOHR TITAN.2X25MM C/10</td><td>24725</td><td>1</td><td>BITS PHIL.CTPOHR TITAN.2X50MM C/10</td><td>14862</td><td>10</td><td>BITS PHIL.MAKITA N,1 X 25MM / 656</td><td>14863</td><td>20</td><td>BITS PHIL.MAKITA N,2 X 25MM / 657</td><td>20026</td><td>20</td><td>BITS PHIL.MAKITA N,3 X 25MM / 65 </td><td>14865</td><td>10</td><td>BITS PHIL.MAKITA N.1 X 50MM / 666</td><td>14866</td><td>10</td><td>BITS PHIL.MAKITA N.2 X 50MM / 667</tr>


Quanto às substituições no início e no final da string nenhum problema. O uso do sed com ^ e $ resolvem a questão.


O ponto é identificar a primeira e a segunda vírgula após ADDITEM e fazer a substituição.


Alguém consegue me ajudar?

Veja aí se isso resolve

 sed -r 's/(ADDITEM=[0-9]{1,5})([,])([0-9])([,])*./\1<\/td><td>\3<\/td><td>/g'


reply via email to

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