Я пишу скрипт bash, из которого мне нужно заменить некоторый текст в другом файле. Мне нужно найти и заменить следующий текст в myfile
$conf['extra_login_security'] = true;
с:
$conf['extra_login_security'] = false;
поэтому я попробовал следующее:
sed -i 's_extra_login_security'] = true_extra_login_security'] = false_g' myfile.php
но это не сработало, я получаю следующую ошибку:
sed: -e expression # 1, character 15: unknown option for the `s' command
можете ли вы помочь мне и сказать, что я делаю неправильно?
Ты можешь использовать
sed "s/\(extra_login_security'] = \)true/\1false/" myfile.php
Подробности:
\(extra_login_security'] = \)
- Группа захвата 1: extra_login_security'] =
строкаtrue
- фиксированная строка\1false
- замена: значение группы 1 + подстрока false
.См. онлайн демо:
#!/bin/bash
s = "\$conf['extra_login_security'] = true;"
sed "s/\(extra_login_security'] = \)true/\1false/" <<< "$s"
# => $conf['extra_login_security'] = false;