Как вставить строку в файл между двумя блоками известных строк (если она не была вставлена ранее), используя bash?

Я написал bash скрипт, который может модифицировать php.ini в соответствии с моими потребностями.
Теперь мне нужно внести новое изменение, и я не могу найти четкого решения для этого.

Мне нужно изменить php.ini так, чтобы вставить (если не было вставлено ранее)

extension="memcache.so" 


между блоком

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

и блоком

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

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

EDITED: решено с помощью

if ! grep -Fxq 'extension="memcache.so"' 'php.ini'; then
    line=$(cat 'php.ini' | grep -n '; Module Settings ;' | grep -o '^[0-9]*')
    line=$((line - 2))
    sudo sed -i ${line}'i\extension="memcache.so"' 'php.ini'
fi
5
задан Luca Borrione 23 January 2012 в 13:49
поделиться