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 :

Problème avec awk et un pipe


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Points : 305
    Points
    305
    Par défaut Problème avec awk et un pipe
    Salut à tous

    le contenu du fichier fichier.txt :
    20|25
    12|62
    19|22

    Pourquoi ces codes ne marchent pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier.txt | awk -F"|" '{print $0"|"$1+$2}' > fichier.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat fichier.txt | awk -F"|" '{print $0"|"$1+$2}' | cat>fichier.txt

    les deux écrasent le contenu du de fichier.txt et ceci devient vide..


    Merci d'avance..

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Points : 1 412
    Points
    1 412
    Par défaut
    Il faut que tu passes par un fichier temporaire.

    Lors d'un pipe, les commandes sont exécutées en parallèle. Tu demandes donc de lire et d'écrire sur le même fichier.

    En pratique, lorsque tu utilises une simple redirection, le fichier est écrasé et ouvert en écriture. Or là, tu cherches à le lire en même temps. D'où le problème.

    Par ailleurs, il n'est pas utile d'utiliser cat ici : awk est capable de lire le fichier tout seul, s'il est en argument.

  3. #3
    Membre averti Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Points : 305
    Points
    305
    Par défaut
    Merci pour la réponse LLB

    ça marche bien avec un fichier temporaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F"|" '{print $0"|"$1+$2}' fichier.txt > fichier_tmp ; cat fichier_tmp > fichier ; rm fichier_tmp

  4. #4
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    968
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 968
    Points : 1 412
    Points
    1 412
    Par défaut
    Tu préfères pas utiliser mv ?

  5. #5
    Membre averti Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Points : 305
    Points
    305
    Par défaut
    oui c'est faisable aussi..

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

Discussions similaires

  1. Problème avec AWK
    Par nicnictout dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 01/04/2011, 17h34
  2. problème avec Awk
    Par morgoths dans le forum Linux
    Réponses: 1
    Dernier message: 21/04/2010, 16h37
  3. Problème avec awk
    Par bstages2000 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 03/12/2007, 12h58
  4. problème avec la commande awk
    Par salseropom dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 05/06/2007, 13h02
  5. Problème avec awk
    Par Michaël dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/08/2006, 13h30

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