Substituindo um padrão por outro entre a primeira e a segunda ocorrência de um padrão no arquivo

2

Deseja que a vírgula seja (,) substituída pelo alfabeto u entre a primeira ocorrência de y até a segunda ocorrência de y. Dada a seguir é o arquivo de entrada de amostra.

100y00893225900,008932259,06,2013,NOKIA Q PHONE,TXS000000287356,PDF,Text,MEOB,1.4,00 00,DoD,07/07/2013,06/01/2013,06/30/2013,07/10/2024,trueyr=56734,d=199y
56734_199_0.pdf
100y00893225900,008932259,06,2013,SAMSUNG T PHONE,TXS000000287356,PDF,Text,MEOB,1.4,00 00,DoD,07/07/2013,06/01/2013,06/30/2013,07/10/2024,trueyr=56734,d=199y
56734_199_0.pdf      
100y00893225900,008932259,06,2013,APPLE S PHONE,TXS000000287356,PDF,Text,MEOB,1.4,00 00,DoD,07/07/2013,06/01/2013,06/30/2013,07/10/2024,trueyr=56734,d=199y
56734_199_0.pdf
~
~
~

Realmente falando, cada linha tem 3 "y" ocorrências.

Saída desejada:

100y00893225900u008932259u06u2013uNOKIA Q PHONEuTXS000000287356uPDFuTextuMEOBu1.4u00 00uDoDu07/07/2013u06/01/2013u06/30/2013u07/10/2024utrueyr=56734,d=199y
56734_199_0.pdf
100y00893225900u008932259u06u2013uSAMSUNG T PHONEuTXS000000287356uPDFuTextuMEOBu1.4u00 00uDoDu07/07/2013u06/01/2013u06/30/2013u07/10/2024utrueyr=56734,d=199y
56734_199_0.pdf
100y00893225900u008932259u06u2013uAPPLE S PHONEuTXS000000287356uPDFuTextuMEOBu1.4u00 00uDoDu07/07/2013u06/01/2013u06/30/2013u07/10/2024utrueyr=56734,d=199y
56734_199_0.pdf
~
~
~
    
por Ram 05.02.2014 / 19:47

2 respostas

6
awk -Fy -v OFS=y '{gsub(",","u",$2); print}' file
    
por 05.02.2014 / 20:26
0

E aqui está um Perl, só um pouco mais:

perl -Fy -ane 'do{$F[1]=~s/,/u/g; $,="y";} if /y/; print @F;' file
    
por 06.02.2014 / 03:00