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.
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
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 ...
Cependant j'ai réussi en utilisant awk.
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
C'est pas beau, hein? Alors quelqu'un dans l'assistance pourrait-il me montrer comment faire? Je l'en remercierai abondammant...
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
Partager