我的文档包含代表解码信息的很长字符串,我想,
从字符串的最后部分删除逗号。例如,这是长字符串之一:
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"
- 通过贪婪正则表达式跳到最后一对单引号。*
- 然后选择单引号之间的内容并将所有逗号转换为空格。