# \[sed\] positionner une ligne relativement à une autre

**URL:** <https://www.debian-fr.org/t/sed-positionner-une-ligne-relativement-a-une-autre/59309>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 6:22 UTC](https://www.debian-fr.org/t/sed-positionner-une-ligne-relativement-a-une-autre/59309 "2016-02-21T18:22:21Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 6:22 UTC](https://www.debian-fr.org/t/sed-positionner-une-ligne-relativement-a-une-autre/59309/1 "2016-02-21T18:22:21Z")

</div>

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 :

```auto
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 !

---

<div class="post-metadata">

**Author:** ![fluo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/e9bcb4/32.png) [@fluo](https://www.debian-fr.org/u/fluo)\
**Post date:** [Février 21, 2016, 6:22 UTC](https://www.debian-fr.org/t/sed-positionner-une-ligne-relativement-a-une-autre/59309/2 "2016-02-21T18:22:23Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 6:22 UTC](https://www.debian-fr.org/t/sed-positionner-une-ligne-relativement-a-une-autre/59309/3 "2016-02-21T18:22:24Z")

</div>

[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]

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 6:22 UTC](https://www.debian-fr.org/t/sed-positionner-une-ligne-relativement-a-une-autre/59309/4 "2016-02-21T18:22:24Z")

</div>

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

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

![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")
