[sed] positionner une ligne relativement à une autre

Salut !

Dans un de mes scripts, j’utilise echo pour insérer une ligne dans un fichier texte au cas où elle ne s’y trouverait pas déjà.
La version actuelle du script la place à la fin du fichier :

if ! [ "$(grep "Full Screen" baldur.ini)" ]; then echo "Full Screen=0" >> baldur.ini; fi

J’aimerai utiliser sed pour placer cette ligne juste avant la ligne « [GameSpy] » qui elle se trouve déjà dans ce fichier (et non plus à la fin du fichier comme avec ‘echo “…” >> fichier’).

J’en appelle à vos lumières pour trouver la syntaxe adéquate !

Peut-être en lisant ligne par ligne le fichier source par une boucle. Puis si la ligne lue contient l’expression régulière Full Screen ou [GameSpy], alors on ajoute la ligne lu + Full Screen=0, sinon on ajoute la ligne lue.

[code]moi@local ~ % head .zshrc
############

~/.zshrc

############

Permettre à less di lire plusieurs formats

#export LESSCHARSET=latin9
#eval $(lesspipe)

autoload -U zmv
autoload -U zcp
moi@local ~ % head .zshrc | sed ‘/eval/a coucou’
############

~/.zshrc

############

Permettre à less di lire plusieurs formats

#export LESSCHARSET=latin9
#eval $(lesspipe)
coucou

autoload -U zmv
autoload -U zcp[/code]

Merci MisterFreez, cette ligne a exactement le comportement recherché :

if ! [ "$(grep "Full Screen" baldur.ini)" ]; then sed -i '/BitsPerPixel/a Full Screen=0' baldur.ini; fi

:023