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 :

Modifier un fichier en "edite"


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    DIE
    DIE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Par défaut Modifier un fichier en "edite"
    Bonjour,

    je viens de découvir la commande PERL suivante qui permet de modifier le contenu d'un fichier.

    perl -pi -e 's#<chaine de caractère à remplacer>#<chaine de caractère de remplacement>#g' <nom des fichiers>

    y a-t-il l'équivalent en sed ou awk ? j'entends d'éviter de créer un fichier pour ensuite le renommer

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's#<chaine de caractère à remplacer>#<chaine de caractère de remplacement>#g'  FILE

  3. #3
    DIE
    DIE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Par défaut
    je suis en KSH sous AIX je n'ai pas l'option -i
    en awk ce n'est pas possible ?

  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
    Le problème n'est pas le shell( ksh), mais le sed utilisé. Si ton sed ne possède pas l'option -i, il n'est pas dur d'écrire un script ou un alias pour le simuler, en passant par un fichier temporaire.

    Et awk n'est pas prévu pour remplacer le travail de sed. À ma connaissance, il ne possède pas d'équivalent du -i, et la syntaxe est plus lourde pour faire un simple remplacement de regexp.

  5. #5
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    sed ou awk permettent de faire des traitements, mais ne permettent pas, sauf option particulière, de travailler sur le fichier d'entrée.
    La seule solution dans ce cas est de passer par un fichier temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed 'commande_sed_a_executer' fichier_entree > fichier_sortie
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  6. #6
    DIE
    DIE est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 101
    Par défaut
    Merci de vos réponses

    donc il n'y a que PERL qui permet de modifier un fichier en entrée.
    c'est dommage je trouve de devoir toujours créer des fichiers temporaires pour après les deleter...

    Sur MVS par exemple, dans un JCL un fichier temporaire s'appelle &&quelquechose et il est supprimer automatiquement en fin d'execution

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

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