awk -F\' -vOFS=\' '{gsub(","," ",$2); print}'
Eu tenho documento contendo strings muito longas que representam informações decodificadas, eu quero remover ,
da última parte da string. Por exemplo, esta é uma das longas seqüências de caracteres:
Insert into PE_ATRT_S(ID_ANA_TX,FQ_WQ_ASDF,ID_PRTY,NM_ATHY_TX,SC_RND,QU_DGT_RND) values (99990987868959,null,68,'T59 - %,Dsc,Itm-2 tax 1 Juris',4,5);
Eu quero remover a vírgula da última parte dela, então deixe-me aumentar o zoom para mostrar a você como é:
(99990987868959,null,68,'T59 - %,Dsc,Itm-2 tax 1 Juris',4,5);
para que o resultado final seja assim:
Insert into PE_ATRT_S(ID_ANA_TX,FQ_WQ_ASDF,ID_PRTY,NM_ATHY_TX,SC_RND,QU_DGT_RND) values (99990987868959,null,68,'T59 - % Dsc Itm-2 tax 1 Juris',4,5);
por favor, observe a última parte da longa string, sem vírgula em parte dela, vamos ampliar para ver melhor:
(99990987868959,null,68,'T59 - % Dsc Itm-2 tax 1 Juris',4,5);
awk -F\' -vOFS=\' '{gsub(","," ",$2); print}'
Solução alternativa com gnu sed
:
sed -r 's/(\x27.*),(.*\x27)/ /g' file
\x27
: ascii código de aspas simples '
Vitrine Perl:
perl -pe "1 while s/'.*\K,(?=.*')/ /" input.txt
Saída:
Insert into PE_ATRT_S(ID_ANA_TX,FQ_WQ_ASDF,ID_PRTY,NM_ATHY_TX,SC_RND,QU_DGT_RND) values (99990987868959,null,68,'T59 - % Dsc Itm-2 tax 1 Juris',4,5);
Saída ampliada:
(99990987868959,null,68,'T59 - % Dsc Itm-2 tax 1 Juris',4,5);
perl -pe "s/.*'\K(.*?)(?=')/\ =~ y|,| |r/e"
Tags text-processing