sed добавить строку, если не существует - PullRequest
1 голос
/ 05 июня 2011

Мне нужно внести изменения в файл конфигурации php.ini через sed (или аналогичный).

Мне нужно добавить следующий текст:

extension=solr.so

Строкадолжен быть добавлен как номер строки 941 в файле конфигурации.Однако, если файл уже существует, его не нужно добавлять снова.

Я полагаю, что есть два подхода: 1) заменить строку 941 текстом или 2) найти текст и добавить его в строку941, если нет совпадений.

У меня есть следующая команда, которая отлично работает, за исключением того, что строка добавляется снова, если скрипт запускается снова:

sed '941i\
extension=solr.so' /etc/php5/apache2/php.ini > /etc/php5/apache2/php.ini

Как я могу убедитьсячто эта команда не добавляет строку, если она уже есть?

1 Ответ

11 голосов
/ 05 июня 2011

Самый простой способ - это проверить перед использованием grep, например:

grep -q -e 'extension=solr.so' file || sed '...'

Кроме того, странно, что вам нужно точно этой строки.Вы должны добавить его в конце или что-то в этом роде.

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

...