[CLI Wiki] page changée : filtres:sed
Une page dans votre Wiki a été ajoutée ou modifiée. Voici les détails : Date : 2007/01/30 14:44 Navigateur : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.1) Gecko/20061205 Iceweasel/2.0.0.1 (Debian-2.0.0.1+dfsg-2) Adresse IP : 217.167.235.157 Nom d'hôte : 217.167.235.157 Ancienne révision : http://cli.asyd.net/home/filtres/sed?rev=1161945045 Nouvelle révision : http://cli.asyd.net/home/filtres/sed Résumé : Ajout exemple reformatage xml Utilisateur : danielcaillibaud @@ -3,13 +3,15 @@ Sed (pour Stream EDitor) est un outil permettant de faire un traitement ligne par ligne d'un flux (pipe) ou d'un fichier. + ===== Quelques petits exemples ===== - ^ Substitution (la partie gauche du s/// étant une regex) | sed s/bruno/Bruno/ <fichier> > <fichier.nouveau> | - ^ Suprimer les lignes 10,14, et 16 à 20 d'un fichier | sed '10d;14d;16,20d;' <fichier> > <fichier.nouveau> | - ^ Supprimer les lignes commençant par ; | sed '/%%^%%;/d' <fichier> > <fichier.nouveau> | - ^ Afficher uniquement les lignes 10 à 15 d'un fichier | sed -n '10,15p' <fichier> > <fichier.nouveau> | - ^ Afficher uniquement les lignes paires | sed '1~2d' < <fichier> | + ^Substitution (la partie gauche du s/// étant une regex) | sed s/bruno/Bruno/ <fichier> > <fichier.nouveau> | + ^Suprimer les lignes 10,14, et 16 à 20 d'un fichier | sed '10d;14d;16,20d;' <fichier> > <fichier.nouveau> | + ^Supprimer les lignes commençant par ; | sed '/%%^%%;/d' <fichier> > <fichier.nouveau> | + ^Afficher uniquement les lignes 10 à 15 d'un fichier | sed -n '10,15p' <fichier> > <fichier.nouveau> | + ^Afficher uniquement les lignes paires | sed '1~2d' < <fichier> | + ^Reformater du xml (virer tous les retours chariot puis en mettre un avant chaque tag ouvrant) |%%sed -e "s/\n//g; s/<\([^\/]\)/\n<\1/g" < fichier.xml%%| ===== généralités ===== * sed -e expression : applique l'expression au flux d'entrée * sed -ne expression : idem, mais n'affiche rien en sortie, sauf si on le précise avec p -- Ce message a été généré par DokuWiki http://cli.asyd.net/home/
noreply@asyd.net wrote:
Une page dans votre Wiki a été ajoutée ou modifiée. Voici les détails :
Je n'ai pas réussi à ajouter cette ligne ^Reformater du xml (virer tous les retours chariot puis en mettre un avant chaque tag ouvrant) |%%sed -e "s/\n//g; s/<\([^\/]\)/\n<\1/g" < fichier.xml%%| A la fin du tableau d'exemple (cela stoppe l'affichage après le titre "Quelques petits exemples")... J'ai fait qq essais sans succès et donc restauré l'ancienne version. -- Daniel
On Tue, Jan 30, 2007 at 02:56:01PM +0100, Daniel Caillibaud wrote:
noreply@asyd.net wrote:
Une page dans votre Wiki a été ajoutée ou modifiée. Voici les détails :
Je n'ai pas réussi à ajouter cette ligne
^Reformater du xml (virer tous les retours chariot puis en mettre un avant chaque tag ouvrant) |%%sed -e "s/\n//g; s/<\([^\/]\)/\n<\1/g" < fichier.xml%%|
Euh... tu voulais probablement dire : | tr -d '\r\n' | sed 's/</\n&/g' fichier.xml ... Puisque sed ne peut pas retirer les retours chariots, puisqu'il fonctionne en mode "ligne par ligne". ++ -- /// Stephane Jourdois /"\ ASCII RIBBON CAMPAIGN \\\ ((( Consultant securite \ / AGAINST HTML MAIL ))) \\\ 24 rue Cauchy X /// \\\ 75015 Paris / \ +33 6 8643 3085 ///
Stephane Jourdois wrote:
On Tue, Jan 30, 2007 at 02:56:01PM +0100, Daniel Caillibaud wrote:
noreply@asyd.net wrote:
Une page dans votre Wiki a été ajoutée ou modifiée. Voici les détails : Je n'ai pas réussi à ajouter cette ligne
^Reformater du xml (virer tous les retours chariot puis en mettre un avant chaque tag ouvrant) |%%sed -e "s/\n//g; s/<\([^\/]\)/\n<\1/g" < fichier.xml%%|
Euh... tu voulais probablement dire : | tr -d '\r\n' | sed 's/</\n&/g' fichier.xml
Euh, oui, (en fait j'avais un pb sur des xml en 1 seule ligne, et je me suis dit que pour que ça serve à d'autre, il fallait étendre un peu, en virant avant mon ajout de \n les retours existants, et j'ai bêtement ajouté un s/...//). Mais il faudrait plutôt tr -d '\r\n' <fichier.xml | sed 's/</\n&/g'
... Puisque sed ne peut pas retirer les retours chariots, puisqu'il fonctionne en mode "ligne par ligne".
Oeuf corse Sinon, je n'ai pas compris pourquoi dokuwiki ne voulais pas de ma ligne de tableau (je doute qu'il ait refusé à cause du contenu stupide de la 1re expression sed) -- Daniel
participants (3)
-
Daniel Caillibaud
-
noreply@asyd.net
-
Stephane Jourdois