Eu acho que você está tentando fazer algo assim:
$ sed 's/=1,/=2347,/g; s/=12,/=3856,/g' sedtest.txt
SF=2347,2
SF=3856,15
SF=17,4
Incluir o literal '=' e ',' no seu padrão e string de substituição permitiria distinguir entre "= 1" e "= 12"
Atualização:
Para substituir ambas variáveis, no sed, você pode usar $ para igualar o fim da linha.
$ sed 's/=1,/=2347,/g; s/=12,/=3856,/g; s/,2$/,2342/g; s/,15$/,234325/g' sedtest.txt
SF=2347,2342
SF=3856,234325
SF=17,4
Vai parecer estranho quando você tem variáveis bash como $ {var} misturadas, mas deve funcionar, desde que você use aspas duplas:
por exemplo,
$ a=42
$ sed "s/=1,/=2347,/g; s/=12,/=${a},/g; s/,2$/,2342/g; s/,15$/,234325/g" sedtest.txt
SF=2347,2342
SF=42,234325
SF=17,4
Como um aparte, se suas substituições forem enormes, você pode limpar tudo isso usando arquivos em sed. Por exemplo,
$ cat ./datascript.sed
# Sed script to do stuff
s/=1,/=2347,/g
s/=12,/=2342,/g
s/,2$/,2342/g
s/,15$/,234325/g
Em seguida, execute o arquivo nos dados
$ sed -f datascript.sed sedtest.txt
SF=2347,2342
SF=2342,234325
SF=17,4
A desvantagem dos arquivos é que não sei como usar variáveis neles.