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 commande problème


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut awk commande problème
    Bonjour,

    j’espère que je suis dans le bon forum..j'ai un problème avec une requête qui doit compter le nombre de (|) dans un fichier pour chaque ligne..
    et s'il en manque, compeleter jusqu'à 47.

    voilà la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat source_file |  awk -F"|" 'NF < 47 {var=""; for (i=0;i<(47-NF);i++) var=var"|";echo $0var;  print $0var;} NF == 47 {print $0;}' >  dest_file
    mais pour un fichier ça me supprime tout, le fichier résultat est vide..

    je ne sais pas comment débugger ..pour bien voir où est le problème ..

    Merci

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonsoir.

    Quelque chose dans ce style conviendrait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #!/bin/bash
     
    source_file=fichier.txt
    tmp=fichier2.txt
     
    cat $source_file | while read ligne
    do
    	nb=$(echo $ligne | awk 'BEGIN{FS="|"} {print NF}')
     
    	ligne2=$ligne
     
    	if [ $nb -lt 47 ]
    	then
    		for (( i=nb ; i<47 ; i=$i+1 ))
    		do
    			ligne2="$ligne2|"
    		done
    	fi 
     
    	echo $ligne2 >> $tmp
    done
    rm $source_file
    mv $tmp $source_file
    N.B : il y a surement plus simple

    Cordialement,
    Idriss

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Bonjour,

    Code script.awk : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/awk -f
     
    BEGIN{FS="|"}
    {
       if( NF < 47 ){
          for (i=0; i<(47 - NF); i++) var=var"|"
       }
       print $0""var
       var=""
    }
    puis, après un chmod adéquat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ./script.awk Source > Destination
    mv Destination Source
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    utiliser cat .... | awk .....
    c'est pas nécessaire pour ce genre de manipulation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk .......... fichiersAtraiter > fichierResultant

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Bonjour,

    J'ai essayé le script de N_bah,
    je n'arrive pas à l’exécuter erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./script.awk: Not a directory

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Pouvez-vous nous retourner le résultat de la commande ci-dessous, dans le répertoire ou vous avez essayé d’exécuter le script ?

    Cordialement,
    Idriss

  7. #7
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    vide ..

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

Discussions similaires

  1. [AC-2007] Bouton de commande : problème clique
    Par nancy54 dans le forum Runtime
    Réponses: 1
    Dernier message: 12/07/2010, 15h43
  2. Programme Client/Commande problème de contraintes
    Par skulled dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 01/04/2010, 13h20
  3. Awk : commande system
    Par bobby.dick dans le forum AIX
    Réponses: 3
    Dernier message: 30/01/2010, 08h19
  4. [awk][Solaris] Problème entre les différentes versions de awk
    Par novices dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 02/07/2008, 09h47
  5. AWK, commande systeme et variable
    Par blacknight74 dans le forum Linux
    Réponses: 14
    Dernier message: 15/09/2007, 14h52

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