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 :

Tronquer un champ avec awk


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ben_harper
    Inscrit en
    Juin 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2006
    Messages : 141
    Par défaut Tronquer un champ avec awk
    Bonjour, voici mon problème.

    J'ai un fichier toto.dat dont le dernier champ ne doit pas excéder 5 caractères.

    J'arrive bien à récupérer le dernier champ de chaque ligne avec la commande suivante :

    awk -F "\x01" '{print $6}' toto.dat

    Dans un premier temps je n'arrive pas à remonter uniquement les champs dont la taille dépasse 5 caractères.

    Et ensuite j'aimerais ne garder que les 5 premiers caractères des champs qui font plus.

    Est ce qu'une âme charitable aurait une idée ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Dans un premier temps je n'arrive pas à remonter uniquement les champs dont la taille dépasse 5 caractères.

    Essaie la commande awk -F"\x01" 'length($6)>5 {print $6}' toto.dat

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Par défaut
    Pour ta deuxième requète, essaie ceci :

    awk -F"\x01" 'length($NF)>5 {print substr($NF,1,5) }' toto.dat


    Tiens moi au courant si ça fonctionne.


  4. #4
    Membre éclairé Avatar de ben_harper
    Inscrit en
    Juin 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2006
    Messages : 141
    Par défaut
    Bonjour,

    merci pour la réponse,

    je n'ai pas encore eu le temps de tester car j'ai trouvé une solution.

    Je te dirais à l'occasion si ça marche.

    Merci.

Discussions similaires

  1. [awk] Imprimer tout le champ avec les espaces
    Par vandman dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 29/05/2015, 12h43
  2. [awk] Extraire des champs avec plusieurs séparateurs différents
    Par leon1983 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 20/11/2013, 16h20
  3. Parcourir et comparer des champs avec awk ?
    Par Gothan44 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 21/10/2013, 16h12
  4. parcourir 2 fichiers avec awk, et comparer 2 champs
    Par morphdown dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/07/2013, 11h03
  5. Afficher un intervalle de champs avec awk
    Par sedawk dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 30/11/2011, 10h19

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