Remplacer une ligne dans un fichier avec SED [Résolu/Fermé]
Signaler
Wilfou
Wilfou
- Messages postés
- 101
- Date d'inscription
- dimanche 4 avril 2010
- Statut
- Membre
- Dernière intervention
- 3 janvier 2014
Wilfou
- Messages postés
- 101
- Date d'inscription
- dimanche 4 avril 2010
- Statut
- Membre
- Dernière intervention
- 3 janvier 2014
A voir également:
- Sed remplacer une ligne dans un fichier
- Sed remplacer une ligne - Meilleures réponses
- Remplacer une ligne dans un fichier avec SED ✓ - Forum - Shell
- Shell lire et modifier une ligne précise ✓ - Forum - Programmation
- Sed remplacer une ligne par une autre ✓ - Forum - Linux / Unix
- SHELL-remplacer un ligne dans un fichier-AWK ✓ - Forum - Shell
- Remplacer une ligne dans un fichier.txt ✓ - Forum - VB / VBA
4 réponses
zipe31
- Messages postés
- 36299
- Date d'inscription
- dimanche 7 novembre 2010
- Statut
- Contributeur
- Dernière intervention
- 27 janvier 2021
$ cat plop blablabla blablabla $une_variable=un_contenu blablabla blablabla $ sed -i.bak 's/^\$une_variable=.*/\$une_autre_variable=un_autre_contenu/' plop $ cat plop blablabla blablabla $une_autre_variable=un_autre_contenu blablabla blablabla
Wilfou
- Messages postés
- 101
- Date d'inscription
- dimanche 4 avril 2010
- Statut
- Membre
- Dernière intervention
- 3 janvier 2014
C'est si simple ?
donc si j'ai bien compris :
le s c'est substitution
le \ c'est pour pouvoir mettre un caractère spécial dans l'expression
le / c'est le délimiteur à l'intérieur de l'expression
le ' c'est le délimiteur de l'expression
maintenant à quoi servent le ^ et le .*
Merci de ton aide en tout cas, je vais essayé ça ce soir ^^
donc si j'ai bien compris :
le s c'est substitution
le \ c'est pour pouvoir mettre un caractère spécial dans l'expression
le / c'est le délimiteur à l'intérieur de l'expression
le ' c'est le délimiteur de l'expression
maintenant à quoi servent le ^ et le .*
Merci de ton aide en tout cas, je vais essayé ça ce soir ^^
zipe31
- Messages postés
- 36299
- Date d'inscription
- dimanche 7 novembre 2010
- Statut
- Contributeur
- Dernière intervention
- 27 janvier 2021
le s c'est substitution
le \ c'est pour pouvoir mettre un caractère spécial dans l'expression
le / c'est le délimiteur à l'intérieur de l'expression
le ' c'est le délimiteur de l'expression
Exact pour tout.
maintenant à quoi servent le ^ et le .*
Le " ^" correspond à une chaîne nulle en début de ligne, autrement dit ce qui se trouve après l'accent circonflexe doit apparaître en début de ligne.
Le "." désigne n'importe quel caractère et le "*" correspond à une séquence de zéro, une ou plusieurs occurrence(s) de l'expression précédente (ou caractère). Dans ton cas ça englobe tout ce qui suit le signe égal dans "$une_variable=un_contenu".
Pour plus de renseignements sur sed voir dans la FAQ :
https://www.commentcamarche.net/faq/sed-478
et notamment :
https://www.commentcamarche.net/faq/9536-sed-introduction-a-sed-part-i
https://www.commentcamarche.net/faq/9559-sed-introduction-a-sed-part-ii
https://www.commentcamarche.net/faq/9558-sed-introduction-a-sed-part-iii
le \ c'est pour pouvoir mettre un caractère spécial dans l'expression
le / c'est le délimiteur à l'intérieur de l'expression
le ' c'est le délimiteur de l'expression
Exact pour tout.
maintenant à quoi servent le ^ et le .*
Le " ^" correspond à une chaîne nulle en début de ligne, autrement dit ce qui se trouve après l'accent circonflexe doit apparaître en début de ligne.
Le "." désigne n'importe quel caractère et le "*" correspond à une séquence de zéro, une ou plusieurs occurrence(s) de l'expression précédente (ou caractère). Dans ton cas ça englobe tout ce qui suit le signe égal dans "$une_variable=un_contenu".
Pour plus de renseignements sur sed voir dans la FAQ :
https://www.commentcamarche.net/faq/sed-478
et notamment :
https://www.commentcamarche.net/faq/9536-sed-introduction-a-sed-part-i
https://www.commentcamarche.net/faq/9559-sed-introduction-a-sed-part-ii
https://www.commentcamarche.net/faq/9558-sed-introduction-a-sed-part-iii
zipe31
- Messages postés
- 36299
- Date d'inscription
- dimanche 7 novembre 2010
- Statut
- Contributeur
- Dernière intervention
- 27 janvier 2021
Salut,
Poste un exemple concret AVANT => APRÈS de ce que tu veux exactement.
Poste un exemple concret AVANT => APRÈS de ce que tu veux exactement.
Wilfou
- Messages postés
- 101
- Date d'inscription
- dimanche 4 avril 2010
- Statut
- Membre
- Dernière intervention
- 3 janvier 2014
Alors il y a le fichier que je veux éditer : conf.php
Et il y a mon petit script : script.sh
Mon petit script.sh, quand je l'exécute, doit remplacer la ligne avec la variable qui est dans conf.php.
Dans ma petite tête, voila comment je me le représente :
1. j'exécute le script.sh
2. il rentre dans le fichier conf.php
3. le script parcours conf.php jusqu'à trouver la ligne avec la variable uniquement à l'aide de "$une_variable=" (car le contenu de la variable peut être tout et n'importe quoi)
4. le script remplace la ligne qu'il a trouvé par la ligne suivante : "$une_autre_variable=un_autre_contenu"
5. le script sort du fichier
Donc après cette exécution, voila le fichier conf.php final :
Voila ^^
blablabla blablabla $une_variable=un_contenu blablabla blablabla
Et il y a mon petit script : script.sh
Mon petit script.sh, quand je l'exécute, doit remplacer la ligne avec la variable qui est dans conf.php.
Dans ma petite tête, voila comment je me le représente :
1. j'exécute le script.sh
2. il rentre dans le fichier conf.php
3. le script parcours conf.php jusqu'à trouver la ligne avec la variable uniquement à l'aide de "$une_variable=" (car le contenu de la variable peut être tout et n'importe quoi)
4. le script remplace la ligne qu'il a trouvé par la ligne suivante : "$une_autre_variable=un_autre_contenu"
5. le script sort du fichier
Donc après cette exécution, voila le fichier conf.php final :
blablabla blablabla $une_autre_variable=un_autre_contenu blablabla blablabla
Voila ^^