Voilà, j'ai honteusement évité d'utiliser sed en prenant awk, mais j'aimerais bien voir la solution que je n'arrive point à trouver.

Le problème
Je veux remplacer, dans fichier.txt, la ligne commençant par "monService" par le texte contenu dans la variable ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
fichier.txt avant changement
...
monService 123/udp # mon service déjà pas mal
...

fichier.txt après changement
...
monService 456/tcp # mon nouveau service tellement mieux
...
J'ai bien essayé ceci, mais les espaces, le / et le # me bloquent (en rouge).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ligne="monService   456/udp  # mon nouveau service tellement mieux"
service="monService"
sed -ei 's@^'$service'.*@'$line'@' fichier.txt
Cependant j'ai réussi en utilisant awk.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ligne="monService   456/udp  # mon nouveau service tellement mieux"
service="monService"
awk -v line="$line" '{if ($1 ~ /^'$service'$/) {print line} else {print}}' fichier.txt > fichier.txt.new
mv fichier.txt.new fichier.txt
C'est pas beau, hein? Alors quelqu'un dans l'assistance pourrait-il me montrer comment faire? Je l'en remercierai abondammant...