Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 24/12/2009, à 00: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.

En ligne

#2 Le 24/12/2009, à 01: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, à 01:28)


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#3 Le 24/12/2009, à 01: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.

En ligne

#4 Le 24/12/2009, à 01:51

sputnick

Re : [sed]Problème de syntaxe

Ok, super, bizarement en utilisant exactement mon exemple du dessus j'obtient ce que tu veux roll

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>'


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#5 Le 24/12/2009, à 01: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&@'


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#6 Le 24/12/2009, à 02: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.

En ligne

#7 Le 24/12/2009, à 03:21

sputnick

Re : [sed]Problème de syntaxe

bibi_marmotte a écrit :

salut,
Je te remercie beaucoup, c'est pile poil ce que je voulais.

Frais.

bibi_marmotte a écrit :

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 ? wink

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, à 03:23)


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

Haut de page ↑