В вашем фрагменте скрипта есть несколько проблем: вы не можете поставить пробелы вокруг =
в ассигнмане оболочки, имена переменных, которые вы назначаете, не совпадают с теми, которые вы используете, и обратные слэши в строках не отображаются. Правильно (если они являются частью строки, подлежащей замене, их нужно удвоить, чтобы sed
рассматривал их как буквальные обратные слеши, а не как экранированные символы). С этим исправлено, похоже, работает для меня. С этим файлом сценария:
#!/bin/bash
input_string='cn=xxxxx\\, yyyyy (abc-ns),cn=users,dc=box,dc=com'
to_be_replaced_str='cn=aaaa\\, bbbbb (abc),cn=users,dc=box,dc=com'
sed "s#'${input_string}'#'${to_be_replaced_str}'#g" sample.txt
И этот входной файл (sample.txt):
ldap_user = 'cn=xxxxx\, yyyyy (abc-ns),cn=users,dc=box,dc=com'
Он производит такой вывод:
ldap_user = 'cn=aaaa\, bbbbb (abc),cn=users,dc=box,dc=com'
Если обратные косые черты отсутствуют в реальном файле, удалите их из обеих строк. Точно так же, если одинарные кавычки отсутствуют в реальном файле, удалите их из команды sed
(но не вокруг присвоений переменных, это часть синтаксиса оболочки).
p.s. На этот вопрос было бы намного проще и быстрее ответить, если бы вы включили фактический входной файл (или соответствующий раздел) и желаемый результат.