J'en appelle aux maîtres de SED
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:
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:
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:
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...