从长字符串的特定部分删除逗号

从长字符串的特定部分删除逗号

我的文档包含代表解码信息的很长字符串,我想,从字符串的最后部分删除逗号。例如,这是长字符串之一:

 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);

我想从它的最后部分删除逗号,所以让我放大以向您展示它的样子:

(99990987868959,null,68,'T59 - %,Dsc,Itm-2 tax 1 Juris',4,5);

所以最终结果如下所示:

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);

请注意长字符串的最后一部分,其中没有逗号,让我们放大以更好地查看它:

(99990987868959,null,68,'T59 - % Dsc Itm-2 tax 1 Juris',4,5);

答案1

awk -F\' -vOFS=\' '{gsub(","," ",$2); print}'

答案2

替代解决方案gnu sed

sed -r 's/(\x27.*),(.*\x27)/\1 \2/g' file

\x27:单引号的ascii码'

答案3

Perl 展示:

perl -pe "1 while s/'.*\K,(?=.*')/ /" input.txt

输出:

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);

缩放输出:

(99990987868959,null,68,'T59 - % Dsc Itm-2 tax 1 Juris',4,5);

答案4

 perl -pe "s/.*'\K(.*?)(?=')/\$1 =~ y|,| |r/e"
  • 通过贪婪正则表达式跳到最后一对单引号。*
  • 然后选择单引号之间的内容并将所有逗号转换为空格。

相关内容