Usando Sed
sed -e 's/=\([^,]*\)/=""/g' file.txt
Usando o Awk
awk -F, -v OFS=, '{for (f=1;f<=NF;f++) {sub(/=/,"&\"",$f); sub(/$/,"\"",$f)}; print}' file.txt
Ou mais curto:
awk -F, -v OFS=, '{for (f=1;f<=NF;f++) {gsub(/=|$/,"&\"",$f)} print}' file.txt
Mais curto ainda:
awk -F, -v OFS=, '{for (f=1;f<=NF;f++) {gsub(/=|$/,"&\"",$f)}} 1' file.txt
Usando ex
O Ex foi projetado para edição de arquivos , mas você pode visualizar as alterações sem salvá-las de volta no arquivo da seguinte forma:
ex -sc '%s/=\([^,]*\)/=""/g | %p | q!' file.txt
Para realmente fazer as alterações e salvá-las no arquivo, use:
ex -sc '%s/=\([^,]*\)/=""/g | x' file.txt
No entanto, se você der um padrão que não é encontrado em nenhum lugar do arquivo (por exemplo, não há =
em qualquer lugar no arquivo), então Ex não será encerrado automaticamente. Assim, para uma melhor robustez, costumo usar printf
para passar comandos para Ex:
printf '%s\n' '%s/=\([^,]*\)/=""/g' %p | ex file.txt
E para salvar as alterações:
printf '%s\n' '%s/=\([^,]*\)/=""/g' x | ex file.txt