Замена строк на возврат каретки с помощью Sed - PullRequest
0 голосов
/ 07 октября 2019

У меня есть следующий файл, который я хотел бы изменить:

authorize {
        update request {
                Monthly-Usage = "%{sql:SELECT COALESCE((SUM(`acctoutputoctets`)), 0) FROM radacct WHERE `username`='%{User-Name}' AND Month(acctupdatetime)=(Month(NOW())) AND Year(acctupdatetime)=Year(NOW())}"
        }

    filter_username
    etc


}

, чтобы он стал таким (запрос на обновление {...} удален)

authorize {

    filter_username
    etc
}

Я посмотрел несколько примеров и придумал это, но это не работает:

sed -i 'N; s/update request {\nMonthly-Usage = "%{sql:SELECT COALESCE((SUM(`acctoutputoctets`)), 0) FROM radacct WHERE `username`='"'"'%{User-Name}'"'"' AND Month(acctupdatetime)=(Month(NOW())) AND Year(acctupdatetime)=Year(NOW())}"\n}//g' /etc/freeradius/3.0/sites-enabled/default

1 Ответ

1 голос
/ 08 октября 2019

Это может работать для вас (GNU sed):

sed '/^authorize {$/,/^}$/c\authorize {\n ...\n}' file

Используйте диапазон для изменения файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...