Tente isso
sed 's/|/","/g; s/^/"/; s/$/"/' file
Isso produzirá resultados assim:
"var1","var2","var3"
"Potter, Harry","2","3"
Explicação:
Você precisa colocar cada uma de suas colunas usando aspas ""
.
-
Primeiro
s/|/","/g
substitui todos os|
por","
vírgula entre aspas Saída:var1","var2","var3 Potter, Harry","2","3
-
Segundo
s/^/"/
substitui o início da linha por aspas, em que^
significa início da linha -
Terceiro
s/$/"/
substitui o final da linha por aspas, em que$
significa fim de linha
Você também pode escapar das vírgulas no campo usando barra invertida antes de cada vírgula algo assim
Potter\, Harry,2,3
Você pode ler mais sobre a formatação de csv aqui: link