Универсальная команда sed для поиска и замены значений

/etc/security/limits.conf— это файл конфигурации для модуля pam _limit PAM. Это влияет только на пользователей, которые входят в систему с помощью PAM, , а не службы, запущенные другими способами.

Вам потребуется настроить systemd, чтобы изменить ограничения на запускаемые им процессы, см., например,. Как установить ulimit для службы с помощью systemd? о том, как это сделать.

4
09.12.2019, 20:38
2 ответа

вы можете использовать подстановку параметров оболочки, чтобы избежать нужного символа:

sed -e "s|${old_value//|/\\|}|${new_value//|/\\|}|"
1
27.01.2020, 20:53

Простой способ обойти это — экранировать все переменные перед вызовомsed:

new_value="foo|bar"
old_value="ba|z"
new_value=$(printf '%q' "$new_value")
old_value=$(printf '%q' "$old_value")
some_path="/path/to/ba|z/file"

А потом:

$ echo "$some_path" | sed -e "s|$old_value|$new_value|"
/path/to/foo|bar/file

Хитрость здесь заключается в printf '%q'. Из help printf(, показывающей помощь встроенной команды bashprintf):

  %q    quote the argument in a way that can be reused as shell input
4
27.01.2020, 20:53

Теги

Похожие вопросы