두 번째 인용문이 잘못 배치되었습니다.
sed -e 's/\(".*\),\(.*"\)/\1 \2/g'
또한 정규식을 사용하면 텍스트의 가장 긴 부분과 일치하는 경향이 있습니다. 즉, 문자열에 인용 필드가 둘 이상 있으면 작동하지 않습니다.
sed에서 여러 인용 필드를 처리하는 방법
sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' -e 's/\"//g'
그러나 이것은 인용 된 필드 당 쉼표를 두 개 이상 포함 할 수있는 입력을 사용하여 sed의 첫 번째 표현식이 단일 필드의 최대 쉼표 내용 수만큼 또는 반복 될 때까지 반복되어야합니다 출력을 전혀 변경하지 않습니다.
둘 이상의 표현식으로 sed를 실행하면 여러 개의 sed 프로세스가 실행되고 "tr"이 모두 열린 파이프로 실행되는 것보다 효율적이어야합니다.
그러나 입력 형식이 올바르지 않으면 바람직하지 않은 결과가 발생할 수 있습니다. 즉, 중첩 된 따옴표, 종료되지 않은 따옴표입니다.
실행중인 예제 사용 :
echo '123,"ABC, DEV 23",345,534,"some more, comma-separated, words",202,NAME' \
| sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' \
-e 's/\(\"[^",]\+\),\([^",]*\)/\1 \2/g' -e 's/\"//g'
산출:
123,ABC DEV 23,345,534,some more comma-separated words,202,NAME