Atualização: adaptando a resposta de Substitua os espaços apenas entre aspas para lidar com esse problema.
Comando:
echo '123,7,11,"$343,700.14","$34,928.63","$377,000.00","$15,421.92",19,2' |
awk -F\" '{OFS="\""; for (i = 2; i < NF; i += 2) gsub(/[$,]/,"",$i); gsub(/"/,""); print}'
Saída:
123,7,11,343700.14,34928.63,377000.00,15421.92,19,2
O primeiro gsub
remove $
s e ,
s entre aspas duplas. O segundo remove as citações.
Deixando a resposta original abaixo, caso isso ajude.
Se eu entendi corretamente uma pesquisa simples e substituir faria
echo '"$1,234,567.89"' | sed 's/[$,"]//g'
Saída 1234567.89
.
O que isto significa é que ele substitui ( s
) os caracteres correspondentes ( []
) $
, ,
e "
com nada (vazio entre os dois últimos /
. O g
flag faz com que seja aplicado globalmente, substituindo todas as instâncias (caso contrário, apenas a primeira instância de uma linha seria substituída).
Como aplicar isso ao arquivo inteiro depende do formato do arquivo. Se não houver mais nada no arquivo que tenha aspas duplas, cifrões e vírgula, isso deve ser bom:
sed 's/[$,"]//g' /path/to/file