Ваше решение работает для меня. Можете ли вы показать, что у вас не работает?
bjb@rhino:~$ cat /tmp/mod
CN NICOLAS
bjb@rhino:~$ cat /tmp/sed.in
BUREAU DES DOCKS ET TRANSPORTS POSTE M.G. CN
bjb@rhino:~$ while read var1 var2; do sed -i -e "/POSTE M.G./ s/ $var1 /
$var1 $var2 /g" /tmp/sed.in; done < /tmp/mod
bjb@rhino:~$ cat /tmp/sed.in
BUREAU DES DOCKS ET TRANSPORTS POSTE M.G. CN NICOLAS
bjb@rhino:~$
Я бы использовал это как адрес для подстановки, хотя:
/POSTE M\.G\./
В противном случае он будет соответствовать таким вещам, как POSTE MAGA
, POSTE M9G2
, et c.
Кроме того, чтобы сопоставлять целые слова без пробелов до и после, вы можете использовать \ b:
s/\b$var1\b/$var1 $var2/g