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 :

AWK suppression d'espace dans une ligne


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 109
    Points : 68
    Points
    68
    Par défaut AWK suppression d'espace dans une ligne
    Bonjour,

    J'ai un fichier qui a le format suivant :

    "aaaaa;bbbbb;ccc ccc ccc;ddddd"

    Le résultat attendu est le suivant :

    "aaaaa;bbbbb;ccccccccc;ddddd" --> autrement dit la suppression des espaces du troisième champ.

    En faisant quelques recherches sur awk, commande qui doit savoir faire ce genre de truc par trop compliqué, j'en suis arrivé à la commande suivante :

    echo "aaaaa;bbbbb;ccc ccc ccc;ddddd" | awk -F ';' '{ sub(/ */,"",$3); print}'

    (sub remplace les blancs de la chaine $3 par rien)

    sauf que ca me donne le résultat suivant :

    "aaaaa bbbbb ccc ccc ccc ddddd"

    Savez vous pourquoi ?

    Merci par avance,

  2. #2
    Membre éclairé 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
    Points : 652
    Points
    652
    Par défaut
    sub cherche et remplace seulement la 1ère occurence rencontrée.
    gsub traite toutes les occurences.
    En plus, c'est / / et non pas / */

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "aaaaa;bbbbb;ccc ccc ccc;ddddd" | awk -F ';' '{ gsub(/ /,"",$3); print}'
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

  3. #3
    Membre éclairé

    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Points : 837
    Points
    837
    Par défaut
    Il semble que gsub perturbe quelque peu la valeur du separateur. Ajoute OFS=";" avant le print.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 109
    Points : 68
    Points
    68
    Par défaut
    Merci à tous les deux. Cela résout mon problème.


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

Discussions similaires

  1. Suppression d'espace dans une rubrique
    Par GodGives dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/12/2007, 18h56
  2. Suppression d'espace dans une rubrique de requête sql
    Par GodGives dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/12/2007, 17h52
  3. [Free Pascal] Suppression des espaces dans une chaîne
    Par Maxence45 dans le forum Free Pascal
    Réponses: 43
    Dernier message: 18/03/2007, 11h29
  4. disperser les espaces dans une ligne
    Par widi70 dans le forum C++
    Réponses: 39
    Dernier message: 29/01/2007, 23h09
  5. Suppression d'espaces dans une chaîne
    Par dafalri dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 13h13

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