파일에서 큰따옴표를 제거하지만 큰따옴표 안에는 제거하지 않는 방법

파일에서 큰따옴표를 제거하지만 큰따옴표 안에는 제거하지 않는 방법

부분적인 CSV 파일의 예가 있습니다(필드 3개만 포함).

"우리의 목표는 큰따옴표 안의 모든 문자를 제거하는 것입니다.

ssl-server,"ssl.server.truststore.type","jks"
tez-env,"enable_heap_"\n"dump","false"
tez-env,"heap_dump_location"\n"port","/tmp"
tez-env,"tez_user","tez"

예상 출력:

ssl-server,ssl.server.truststore.type,jks
tez-env,enable_heap_"\n"dump,false
tez-env,heap_dump_location"\n"port,/tmp
tez-env,tez_user,tez

답변1

csv 작업에는 전용 소프트웨어를 사용하는 것이 좋습니다. sed큰따옴표 안에 쉼표가 없으면 간단한 방법으로 상황을 해결할 수 있습니다.

sed 's/^"//;s/",/,/g;s/,"/,/g;s/"$//' file

답변2

짧은sed해결책:

sed 's/^"\|"$//g; s/"*,"*/,/g;' file

또는방법:

awk -F, '{ for(i=1;i<=NF;i++) gsub(/^"|"$/,"",$i) }1' OFS=',' file

출력(두 방법 모두):

ssl-server,ssl.server.truststore.type,jks
tez-env,enable_heap_"\n"dump,false
tez-env,heap_dump_location"\n"port,/tmp
tez-env,tez_user,tez

관련 정보