Como remover aspas duplas do arquivo, mas não dentro das aspas duplas

1

Temos um exemplo de arquivo CSV parcial (com apenas 3 campos)

nosso objetivo é remover todos os caracteres " , mas não dentro das aspas duplas

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"

resultado esperado:

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
    
por yael 22.08.2017 / 18:22

2 respostas

1

Eu recomendaria usar software dedicado para manipulação de csv, embora este caso possa ser resolvido com o simples sed se não houver vírgulas entre aspas duplas:

sed 's/^"//;s/",/,/g;s/,"/,/g;s/"$//' file
    
por 22.08.2017 / 18:33
1

Solução sed curta:

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

Ou awk abordagem:

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

A saída (para ambas as abordagens):

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
    
por 22.08.2017 / 18:35