IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modification de fichiers, sed [Débutant(e)]


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut Modification de fichiers, sed
    Bonjour,

    Soit le fichier essai.php :
    blabla
    </div>
    Au revoir
    Je souhaite obtenir dans resultat/essai.php :
    blabla
    Toto
    </div>
    Au revoir
    Si je fais :
    sed "s~</div> Au revoir~Toto </div> Au revoir~g" essai.php > resultat/essai.php
    Cela ne fonctionne pas.
    Je pense que le problème vient du saut de ligne, mais je n'arrive pas à trouver la solution.

    Le but est de faire une modification de fichiers .php en masse.

    Merci d'avance.

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par a1b2c

    Le but est de faire une modification de fichiers .php en masse.

    Merci d'avance.

    Remplace tout enregistrement commençant ( ^ ) par blabla suivi de n'importe quel(s) caractère(s) jusqu'à la fin de l'enreg. ( cf expressions régulières ) par blabla ( & ) suivi de NewLine et Toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed -i "s/^blabla.*$/&\nToto/" test.txt

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    Cela ne fonctionne pas.

    Je précise les données du problème : blabla désigne du code html qui varie d'un fichier à l'autre ; seule la fin du code est commune à tous les fichiers.

    Reformulation de la question : comment insérer une ligne de code - par exemple <?include("toto.php");?> - à la ligne précédent le premier </div> d'un fichier (et seulement le premier) ?

  4. #4
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    Code foo.sed : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    \~</div>~ {
      i\
    <?include("toto.php"); ?>
      :a
      n
      ba
    }

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $ cat file
    foo
    bar
    </div>
    foo
    </div>
    $ sed -f foo.sed < file
    foo
    bar
    <?include("toto.php"); ?>
    </div>
    foo
    </div>
    C'est bien ça ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    Tout à fait, ça a fonctionné.
    Merci beaucoup, cela m'a évité un travail long et fastidieux.
    Pourriez-vous me préciser la signification de
    ou me donner un lien vers une ressource en la matière ?

  6. #6
    LLB
    LLB est déconnecté
    Membre émérite
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Par défaut
    :a sert à définir un label (que je nomme "a").
    n sert à passer à la ligne suivante (en affichant la ligne courante)
    ba sert à faire un saut (un goto) vers le label a.

    Bref, le but est de traiter tout le reste du fichier sans faire de traitement dessus. Cela évite d'insérer la ligne avant chaque </div>.

    Pour la ressource, le mieux est de lire man sed et info sed.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modification complexe fichier - awk, sed ?
    Par vpovpo dans le forum Unix
    Réponses: 1
    Dernier message: 19/04/2010, 16h06
  2. modification complexe fichier - awk, sed ?
    Par vpovpo dans le forum Linux
    Réponses: 1
    Dernier message: 19/04/2010, 16h00
  3. [langage] [Fichier]problème modification de fichier
    Par Melchisedec dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 23h01
  4. [ICS FtpClient] Date modif de fichier et listage de dossier
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 13/06/2004, 19h54
  5. modification de fichier EOF
    Par scorbo dans le forum C
    Réponses: 9
    Dernier message: 28/11/2003, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo