Я не могу воспроизвести вашу проблему, используя bash.
$ echo aaa | sed -r 's/aaa/AAA \n#Passive mode/' AAA #Passive mode $ myprog=sed $ echo aaa | $myprog -r "s/aaa/AAA \n#Passive mode/" AAA #Passive mode
поэтому я подозреваю, что в этом есть нечто большее, чем указано в вопросе.
Это наверное потому что
1) у вас, вероятно, есть какой-то сложный набор сценариев и / или псевдонимов и / или переменных среды, которые приводят к тому, что ваши аргументы оцениваются несколько раз и
2) вы используете неверный тип кавычек. Когда вы используете "Params"
оболочку, процесс будет преобразован \\
в экранирование \
.
Вы можете быть счастливее, используя одинарные кавычки: 'params'
сравнить
$ echo "s/aaa/AAA \\\n#BBB/" s/aaa/AAA \\n#BBB/ $ echo 's/aaa/AAA \\\n#BBB/' s/aaa/AAA \\\n#BBB/