긴 문자열의 특정 부분에서 쉼표를 제거합니다.

긴 문자열의 특정 부분에서 쉼표를 제거합니다.

,내 문서에는 디코딩된 정보를 나타내는 매우 긴 문자열이 포함되어 있으며 문자열의 마지막 부분에서 쉼표를 제거하고 싶습니다 . 예를 들어, 다음은 긴 문자열 중 하나입니다.

 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"
  • 욕심 많은 정규식을 통해 작은따옴표의 마지막 쌍으로 이동합니다. *
  • 그런 다음 작은따옴표 사이에 있는 항목을 선택하고 모든 쉼표를 공백으로 변환합니다.

관련 정보