중복 가능성:
따옴표 사이의 쉼표만 제거
저는 따옴표 사이의 세미콜론을 쉼표로 바꾸는 함수를 사용하려고 합니다 awk
. 따옴표("")를 유지하고 싶기 때문에 이는 98% 괜찮습니다.
입력 문자열
0x0001003C00040B40;1674901;3;3;"PORTUGAL,0x7ed78c,0x285d";1;12;5;5;;;"SIP,[email protected],;tag=gK06033793,,0,,,,sip:5343559563@213:5060,213379902684@213,,,sip:213379902684@213:5060,,,,,,403,21,0,0,,0,0,,,,,,,,1,0,0,0,,";213379902684;;110;;;1;1;;;3;C:1:2;;;0x3D064F1D;0;1;;0;;;;;;0;;;;;;;;;;;14;;;;;;1;1;1;1;;1;3;3;;7;;;1;21;;;;;;16;8;3;;;;;;"REDI,20,3459,3459,0,0,1,1,1,2,,,,,,,,,,,0,2";;1;;2;TANDEM;;;;;;;;;;;;;;;;;;;22;16;;;;;;1;;;;;;;;;;;;;;;;;0;9;9;;8312716;10333;;;;;;;;;;;"0,495,0,0";0;;;;;;;;;;;;;;;;;;;;;;;831271610333;
암호
/usr/xpg4/bin/awk -F'"' -v OFS='' '{ for (i=2; i<=NF; i+=2) gsub(";", ",", $i) } 1' infile
실제 결과
0x0001003C00040B40;1674901;3;3;PORTUGAL,0x7ed78c,0x285d;1;12;5;5;;;SIP,[email protected],,tag=gK06033793,,0,,,,sip:5343559563@213:5060,213379902684@213,,,sip:213379902684@213:5060,,,,,,403,21,0,0,,0,0,,,,,,,,1,0,0,0,,;213379902684;;110;;;1;1;;;3;C:1:2;;;0x3D064F1D;0;1;;0;;;;;;0;;;;;;;;;;;14;;;;;;1;1;1;1;;1;3;3;;7;;;1;21;;;;;;16;8;3;;;;;;REDI,20,3459,3459,0,0,1,1,1,2,,,,,,,,,,,0,2;;1;;2;TANDEM;;;;;;;;;;;;;;;;;;;22;16;;;;;;1;;;;;;;;;;;;;;;;;0;9;9;;8312716;10333;;;;;;;;;;;0,495,0,0;0;;;;;;;;;;;;;;;;;;;;;;;831271610333;
원하는 결과
0x0001003C00040B40;1674901;3;3;"PORTUGAL,0x7ed78c,0x285d";1;12;5;5;;;"SIP,[email protected],,tag=gK06033793,,0,,,,sip:5343559563@213:5060,213379902684@213,,,sip:213379902684@213:5060,,,,,,403,21,0,0,,0,0,,,,,,,,1,0,0,0,,";213379902684;;110;;;1;1;;;3;C:1:2;;;0x3D064F1D;0;1;;0;;;;;;0;;;;;;;;;;;14;;;;;;1;1;1;1;;1;3;3;;7;;;1;21;;;;;;16;8;3;;;;;;"REDI,20,3459,3459,0,0,1,1,1,2,,,,,,,,,,,0,2";;1;;2;TANDEM;;;;;;;;;;;;;;;;;;;22;16;;;;;;1;;;;;;;;;;;;;;;;;0;9;9;;8312716;10333;;;;;;;;;;;"0,495,0,0";0;;;;;;;;;;;;;;;;;;;;;;;831271610333;
어떻게 해야 하나요?
답변1
"
출력 필드 구분 기호로만 사용 됩니다.
awk -F\" -v OFS=\" '{ for (i=2; i<=NF; i+=2) gsub(";", ",", $i) } 1'