gawk '{gsub(/,/,"|"); printf("%s", $0 RT)}' RS='"[^"]*"' input.txt
или то же самое, но по-другому:
gawk -F, '{$1=$1; printf("%s", $0 RT)}' RS='"[^"]*"' OFS='|' input.txt
Вход
John,Tonny,"345.3435,23",56th Street
one,"two,three",four,five,"six,stub,seven",eight,nine
one,"two,three",four,five,"six,stub,seven",eight,nine,"ten,eleven,twelve"
Выход
John|Tonny|"345.3435,23"|56th Street
one|"two,three"|four|five|"six,stub,seven"|eight|nine
one|"two,three"|four|five|"six,stub,seven"|eight|nine|"ten,eleven,twelve"