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/|/","/gsubstitui 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