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 :

sed/awk/autre : rechercher-remplacer complexe


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut sed/awk/autre : rechercher-remplacer complexe
    Bonjour !

    Je suis face au problème suivant : je dispose des deux fichiers suivant :
    et un second contenant du html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    </td>
    </tr>
    <tr>
    <td class="panelsurround" align="center">
    <div class="panel">
    Je souhaiterais remplacer le pattern "b" (qui peut apparaître plusieurs fois) du fichier 1 par le contenu du fichier 2. Et là, voilà la galère Que ce soit avec sed ou awk impossible de le faire : il semblerait que le html contienne des caractères qui gène la transformation... (rechercher remplacer fonctionne très bien une chaîne de remplacement avec moins de caractères exotiques).

    Alors avez-vous déjà rencontré ce problème ? Et trouvé une solution ?
    (Existe-t-il une fonction pour échapper de tels caractères ?)

    Bonnes fêtes à tous et merci par avance !

    P.S. J'ai l'impression que sed ne peut pas remplacer par une chaîne contenant plusieurs lignes contrairement à awk (à vérifier).

  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 Instruction r (read) de sed
    Bonsoir,

    Si j'ai bien compris, le sed suivant doit faire l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '/^b$/r fic.html' -e '/^b/d' fic.txt

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué
    Merci beaucoup pour ta réponse, c'est exactement ce qu'il me fallait !

    Serait-il possible de lire depuis l'entré standard le fichier html ? (ça serait juste du plus, au moins pour l'instant je peux continuer tranquillement !)

    EDIT : Trouvé ! Dans ce cas là le fichier de lecture n'est plus fic.html mais /dev/stdin

    As a GNU sed extension, the special value /dev/stdin is supported for the file name, which reads the contents of the standard input.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/12/2012, 18h14
  2. Remplacer un motif avec le contenu d'une variable via sed / awk
    Par deupac dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 18/03/2010, 20h30
  3. awk, sed ou autre?
    Par Vil'Coyote dans le forum Linux
    Réponses: 6
    Dernier message: 19/02/2009, 23h07
  4. Réponses: 5
    Dernier message: 18/06/2008, 15h11
  5. [SED - AWK] Recherches du contenu d'un fichier dans un autre
    Par lordduck dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 22/06/2007, 10h07

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