Вы должны экранировать символ "&" в правой части команды s
, добавив перед ним "\" . Без него «&» является особенным и заменяется тем, что соответствует регулярному выражению. В левой части "&" не является особенным и гарантированно не является особенным. Вы не хотите его избегать, поскольку, хотя &
никогда не будет особенным, \ &
не гарантируется, и то, что он соответствует, не определено.
Итак:
sed -i 's/s&/l\&/g' file.txt