Pages : 1
#1 Le 23/12/2009, à 23:57
- maman
[sed]Problème de syntaxe
bonjour,
je modifie mon site internet. Je me suis dit que sed serait un bon outil, sauf que je n'y comprends pas grand chose. Je cherche à insérer une ligne avant une autre, logique.
Et je n'y arrive pas, ma solution de replis est de remplacer une chaine de caractères par une autre
sed -i~ 's#<li><a href="../2009#<li><a href="../2010/2010.html">2010</a></li><li><a href="../2009#' mon_fichier.html
mais tout est à la suite et ça ne me va pas.
J'ai bien vu sur ce tuto qu'il faut utiliser "i" mais comment.
J'ai essayé
sed "#2009#i\<li><a href="../2010/en_2010.html">2010</a></li>\n" mon_fichier.html
ça m'ouvre ma page dans le terminal et c'est tout.
Ce que j'aimerais, c'est que le fichier soit modifié, j'enregistre et zou.
Merci de bien vouloir m'expliquer ce que je foire.
90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
Hors ligne
#2 Le 24/12/2009, à 00:01
- sputnick
Re : [sed]Problème de syntaxe
sed 's@PATTERN@REMPLACEMENT\n&@' <FICHIER>
Si tu veux que le changement soit definitif sans s'afficher sur la sortie standard, ajoute -i :
sed -i ...
Edit: je change le delimiteur / par @ car tu a des / dans ta chaine de caractere.
Dernière modification par sputnick (Le 24/12/2009, à 00:28)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 24/12/2009, à 00:31
- maman
Re : [sed]Problème de syntaxe
salut,
désolée, je me suis mal faite comprendre, ce n'est pas ce que je veux faire (même si la syntaxe est OK). Je vais mettre le texte en vrai, c'est plus simple.
J'ai ceci:
<li><a href="../2009.html">2009</a></li>
et je voudrais ceci
<li><a href="../2010.html">2010</a></li>
<li><a href="../2009.html">2009</a></li>
Je voudrais que les lignes soient les unes en dessous des autres et pas alignées.
Si j'applique
sed -i~ 's#<li><a href="../2009#<li><a href="../2010.html">2010</a></li><li><a href="../2009#' mon_fichier.html
Tout est aligné.
Le site fonctionne, mais l'écriture est moche.
Comment dois je faire ?
90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
Hors ligne
#4 Le 24/12/2009, à 00:51
- sputnick
Re : [sed]Problème de syntaxe
Ok, super, bizarement en utilisant exactement mon exemple du dessus j'obtient ce que tu veux
sed 's@<li><a href="../2009.html">2009</a></li>@<li><a href="../2010.html">2010</a></li>\n&@' <<< '<li><a href="../2009.html">2009</a></li>'
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#5 Le 24/12/2009, à 00:54
- sputnick
Re : [sed]Problème de syntaxe
Donc cela modifiera definitivement tes fichier ( backups en .bak ) :
sed -i.bak 's@<li><a href="../2009.html">2009</a></li>@<li><a href="../2010.html">2010</a></li>\n&@'
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#6 Le 24/12/2009, à 01:19
- maman
Re : [sed]Problème de syntaxe
salut,
euh, oui, je ne suis pas forcément très douée pour tout comprendre du premier coup.:/
Je te remercie beaucoup, c'est pile poil ce que je voulais.
J'aimerais comprendre le fonctionnement de cette entrée.
"s" c'est pour remplacer, non ? "-i" sert à insérer 2010 avant 2009 et "\&" est pour le retour à la ligne.
Il y a plein de choses que j'aimerais faire avec sed, mais c'est pas si simple que ça. Bref.
Encore merci.
90% of teens today would die if Facebook was completely destroyed. If you are one of the 10% that would be laughing, copy and paste this to your signature.
Hors ligne
#7 Le 24/12/2009, à 02:21
- sputnick
Re : [sed]Problème de syntaxe
salut,
Je te remercie beaucoup, c'est pile poil ce que je voulais.
Frais.
J'aimerais comprendre le fonctionnement de cette entrée.
"s" c'est pour remplacer, non ? "-i" sert à insérer 2010 avant 2009 et "\&" est pour le retour à la ligne.
Tu t'es faché avec un man ?
s = substitution donc on a forcement 3 delimiteurs, dans mon cas @ puis une regex ou une chaine source et use chaine cible apres le deuxieme @. Le -i sert a effectuer mes modifications permanentes comme deja dit dans ce fil.
La base plus trivial de la substitution c'est ça : s/foo/bar/
Le & veulet dire tout ce qui a matché entre les delimiteurs, ( si tu a suivit : @ ) qui correspond à ta ligne contenant 2009.
Dernière modification par sputnick (Le 24/12/2009, à 02:23)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne