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 argc et argv


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut Awk argc et argv
    Bonjour,
    Dans le cadre de mon travail, j'essaie de comprendre le script ci-dessous. Mais je débute en shell et en awk. Pourriez-vous m'aider notamment à comprendre la dernière ligne de ce script qui lit un fichier csv dont les lignes sont du type :
    prenoms;nombre;sexe;annee
    Jessy;6;X;2005
    Joana;7;F;2005
    Joseph;75;M;2005
    Judith;19;F;2005

    Je vous remercie par avance

    Script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #/bin/bash
     
    if [ $# -ne 1 ]; then
        echo "error: usage $0 " 1>&2
        echo "returns an average line of the input file" 1>&2
        exit 1
    fi
     
    input=$1; shift
    size=`wc -l $input | awk '{print $1}'`
    TIME=`date +%s`
     
    awk 'BEGIN{srand(ARGV[3]); line=int(rand() * (ARGV[2])) + 1; ARGC-=2}NR==line{print}' $input $size $$

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    En gros, le script retourne une ligne calculer par random du fichier csv.

    le awk ici, prend le 3ème paramètre qui est $$ (le pid du process en cours, donc ici du script), il est utilisé pour configurer le random.
    puis il calcul un nombre random compris entre 0 et 1 (0 inclus) qu'il multiplie par le nombre de ligne du fichier csv (la variable size calculée par le wc -l) puis il rajoute 1 à la valeur entière.
    NR==ligne{print} veut dire que si NR est egale à ligne alors affiche $0, or NR sous awk est le numéro de la ligne courante.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut Merci
    Merci infiniment ! C'est exactement l'explication que j'attendais. C'est beaucoup plus clair maintenant.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/09/2008, 19h49
  2. argc et **argv et fichier sous windows
    Par Linu6 dans le forum Débuter
    Réponses: 12
    Dernier message: 25/12/2007, 23h51
  3. int main(int argc, char** argv)
    Par MABB dans le forum C++
    Réponses: 1
    Dernier message: 19/11/2007, 12h20
  4. $argc et $argv et PHP ?
    Par blanchonvincent dans le forum Langage
    Réponses: 2
    Dernier message: 17/11/2007, 00h00
  5. Donner des valeurs à Argc et Argv dans le code
    Par olivier857 dans le forum C
    Réponses: 44
    Dernier message: 20/06/2006, 13h57

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