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

Linux Discussion :

AWK - la derniere colonne ne peut pas etre imprimee dans une meme ligne que les autres ?


Sujet :

Linux

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut AWK - la derniere colonne ne peut pas etre imprimee dans une meme ligne que les autres ?
    Salut a tous,

    Voici ce qui m'arrive : j'ai fait une extraction par une commande systeme ce qui a pondu un flux que je redirige vers awk. dans ce flux j'ai des lignes de type :

    un_texte _id= 4702510 _date= 07 Jul 2009
    ...

    ce qui donne 7 colonnes a traiter.

    ----------

    Maintenant, j'aimerais avoir la date sous le format 2009 Jul 07, donc je veux faire un

    print $7,$6,$5

    Le resultat :

    Jul 07

    Je n'arrive pasz a deviner pourquoi ma derniere colonne ($7) n'est pas affichee...
    Si je fais juste un print $7, elle est bien affichee, mais des que je mets qquechose derriere, elle n'est plus visible. Ca ne change rien si je l'appelle par $NF a la place de $7.

    [edit] OK. je me suis rendu compte que la derniere colonne semble contenir un retour chariot dont il faut que je me debarrasse. une idee pour s'en debarrasser ?

    Si vous avez des suggestions, merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    moi non plus je n'arrive pas à deviner, mais peut être qu'avec le code awk et sh

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut OK. avec le code ca donne ca :
    >>> ca c'est ce que j'ai et qui marche :

    cat patch_list | awk -v valeur="${timestamp1}" '{print valeur,"APPLIED_PATCH","_id=",$1,"_date=",$4,$3,$7}'

    APPLIED_PATCH _id= 4702510 _date= 07 Jul 2009
    APPLIED_PATCH _id= 4702511 _date= 07 Jul 2009
    APPLIED_PATCH _id= 6079591 _date= 13 Oct 2008
    APPLIED_PATCH _id= 300500 _date= 05 Sep 2008

    >>> ca c'est ce que je veux, et qui ne marche pas : le dernier champs contient un retour a la ligne qui replace la fin de la ligne en debut de ligne.

    cat patch_list | awk -v valeur="${timestamp1}" '{print valeur,"APPLIED_PATCH","_id=",$1,"_date=",$7,$4,$3}'
    07 JulD_PATCH _id= 4702510 _date= 2009
    07 JulD_PATCH _id= 4702511 _date= 2009
    13 OctD_PATCH _id= 6079591 _date= 2008
    05 SepD_PATCH _id= 300500 _date= 2008

    Donc la question devient : comment faire pour eviter le retour a la ligne (certainement venant du dernier champs) ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    remplace print par printf dans ta ligne awk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat patch_list | awk -v valeur="${timestamp1}" '{printf valeur,"APPLIED_PATCH","_id=",$1,"_date=",$4,$3,$7}'

    si ça ne marche pas, passe ton fichier patch_list qu'on puisse reproduire ton test

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Mystere resolu
    Il m'a fallu du temps pour realiser que le fichier a pris des CR en fin de ligne : comme le fichier est genere sous ouindoze, il subit une cure d'amaigrissement (on vire les CR), mais ils sont automatiquement regeneres par le tranfert sftp de Filezilla. Solution : ne pas utiliser FileZilla sous ouindoze pour les tranferts.

    En tout cas, merci pour ton temps, Ashin

    Et, une remarque : printf doit etre utilise avec des parametres. Sinon tu risques d'obtenir des choses etranges . Mais je l'avais deja essaye...

  6. #6
    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
    Points : 28 121
    Points
    28 121
    Par défaut
    Bonjour,

    Citation Envoyé par Piloute Voir le message
    printf doit etre utilise avec des parametres. Sinon tu risques d'obtenir des choses etranges . Mais je l'avais deja essaye...
    Pour information, print fonctionne de la maniere proposee.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 717
    Points : 31 028
    Points
    31 028
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Piloute Voir le message
    comme le fichier est genere sous ouindoze, il subit une cure d'amaigrissement (on vire les CR), mais ils sont automatiquement regeneres par le tranfert sftp de Filezilla. Solution : ne pas utiliser FileZilla sous ouindoze pour les tranferts.
    Ou alors spécifier à FileZilla (ou à tout autre logiciel ftp) d'effectuer le transfert en mode "binary"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/05/2009, 19h15
  2. Réponses: 25
    Dernier message: 23/01/2007, 22h27
  3. Réponses: 11
    Dernier message: 10/07/2006, 18h49
  4. Réponses: 8
    Dernier message: 29/03/2006, 15h50
  5. mémoire peut pas etre "read"
    Par zhoom dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 11h56

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