Sed replace не работает как ожидалось

С помощью openbox можно назначить настройки для каждого приложения, как описано в http://openbox.org/wiki/Help:Applications. Также есть хорошая документация по этому поводу в общесистемном конфигурационном файле по умолчанию /etc/xdg/openbox/rc.xml.

Найдите раздел в ~/.config/openbox/rc.xml.


    ...
    
        above
    
    ...

Вы можете использовать xprop, чтобы найти НАЗВАНИЕ или КЛАСС ваше окно.

0
26.04.2016, 05:47
2 ответа

Прежде всего, Одинарные кавычки не могут находиться между одинарными кавычками, даже если им предшествуют обратной косой чертой. , ссылка Руководство по Bash

Во-вторых, вы можете использовать какой-нибудь другой символ в качестве разделителя вместо / , как у вас есть / в строке замены.

Итак, в результате:

sudo sed "s#listen = 127.0.0.1:9000#listen = '/var/run/php56-fpm.sock'#g" /etc/php-fpm.d/www.conf

пока не используйте -i , посмотрите распечатку, чтобы проверить, работает ли она должным образом.

3
28.01.2020, 02:17

Может быть, попробуйте использовать другие символы вместо / для разделения?

sudo sed -i "s@listen = 127.0.0.1:9000@listen = '/var/run/php56-fpm.sock'@g" /etc/php-fpm.d/www.conf

ИЛИ

sudo sed -i "s/listen = 127.0.0.1:9000/listen = '\/var\/run\/php56-fpm.sock'/g" /etc/php-fpm.d/www.conf

Проблема в том, что вы не экранируете / как \ / , но использование @ в качестве разделителя решит вашу проблему. Вы можете использовать ЛЮБОЙ разделитель в sed, как только вы будете согласованы.

И правда от @David, используйте двойные кавычки в соответствии с руководством по bash.

совет: все файлы UX должны содержать EOF в последней пустой строке

2
28.01.2020, 02:17

Теги

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