syntaxe de sed

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : syntaxe de sed

par Invité » 20 janv. 2007, 15:17

Evite les séparateurs | car ils seront vu par sed comme une alternative (a|b --> a ou b). Tu dois également échapper
tous les caractères réservés comme $ (ancrage de fin de ligne) et [] (classe de caractères).

Code : Tout sélectionner

sed "s/\$uidd = \$urow\['val'\]/toto/g"
Ok, je comprends mieux comment fonctionne sed maintenant. Merci merci merci !

(résolu)

par Invité » 20 janv. 2007, 15:13

Alors en fait, je voudrais que cette ligne là :

$uidd = $urow['val'];

devienne :

$uidd = $urow['val'];
$uidd=str_replace("\n<br />\n", "", $uidd);

En fait, je réutilise la même ligne afin que sed se repère au bon endroit dans les fichiers.
Mouais... je suis pas trop d'accord
Si tu dois changer la même chose, dans 20 fichiers, et tous les jours, c'est qu'il y a un problème.

Si c'est une variable de confi à changer par exemple, tu ferais mieux d'utiliser un fichier de config, inclus dans chaque script qui l'utilise. Avec ça, tu ne changes tes infos qu'une fois.
J'y travaille activement en parallèle.

par Ripat » 20 janv. 2007, 15:12

Evite les séparateurs | car ils seront vu par sed comme une alternative (a|b --> a ou b). Tu dois également échapper
tous les caractères réservés comme $ (ancrage de fin de ligne) et [] (classe de caractères).

Code : Tout sélectionner

sed "s/\$uidd = \$urow\['val'\]/toto/g"

par ouckileou » 20 janv. 2007, 14:30

Je suis d'ac (je crois que c'est du perl) mais j'ai pas trouvé mieux :-(
Non, c'est un script shell :

Code : Tout sélectionner

#! /bin/bash
Ce script permet de modifier tous les fichiers php du répertoire :

Code : Tout sélectionner

[/quote] J'ai bien compris ce que faisait la boucle, ce que je voulais savoir c'est ce que tu voulais remplacer (la ligne avec les variables donc) et par quoi. [quote="Anonymous"] C'est hyper pratique quand on doit changer 20 fois par jours plusieurs fichiers quasi identiques... [/quote] Mouais... je suis pas trop d'accord Si tu dois changer la même chose, dans 20 fichiers, et tous les jours, c'est qu'il y a un problème. Si c'est une variable de confi à changer par exemple, tu ferais mieux d'utiliser un fichier de config, inclus dans chaque script qui l'utilise. Avec ça, tu ne changes tes infos qu'une fois.

par Invité » 20 janv. 2007, 14:21

Déjà, ce n'est pas du PHP ça... donc on déplacera
Je suis d'ac (je crois que c'est du perl) mais j'ai pas trouvé mieux :-(
Ensuite, tu pourrais nous expliquer quel est le modèle de la ligne à modifier ? C'est toujours plus sympa que d'avoir à déchiffrer ta ligne :roll:
Bien sûr, excuse moi. J'ai cette variable à modifier dans un fichier php :

$uidd = $urow['val'];


Ce script permet de modifier tous les fichiers php du répertoire :

Code : Tout sélectionner

#! /bin/bash for file in *.php do cp $file $file.bak && sed "s|ANCIENSMOTS|NOUVEAUXMOTS|g" $file.bak > $file done
C'est hyper pratique quand on doit changer 20 fois par jours plusieurs fichiers quasi identiques...

Avec les caractères simples, ca marche. Niveau syntaxe, j'ai manifestement des lacunes pour citer les $,;(' etc.

par ouckileou » 20 janv. 2007, 14:07

Déjà, ce n'est pas du PHP ça... donc on déplacera

Ensuite, tu pourrais nous expliquer quel est le modèle de la ligne à modifier ? C'est toujours plus sympa que d'avoir à déchiffrer ta ligne :roll:

syntaxe de sed

par Invité » 20 janv. 2007, 13:54

Bonjour.

J'ai une ligne à modifier dans une 40ène de fichiers php.

Ce script ne passe pas. Pouvez vous m'aider niveau syntaxe svp ?

ligne à modifier : $uidd = $urow['val'];
par : toto

Code : Tout sélectionner

#! /bin/bash for file in *.php do cp $file $file.bak && sed "s|$uidd = $urow[\'val\'];|toto|g" $file.bak > $file done
Et j'ai beau mettre des \ partout j'y arrive pas. J'ai aussi chercher de la doc (http://www.grymoire.com/Unix/Sed.html par exemple) mais je bloque.

Vraiment, si quelqu'un peut m'aider, merci !