Partage
  • Partager sur Facebook
  • Partager sur Twitter

numéros d'entré

Sujet résolu
Anonyme
    26 mai 2020 à 12:11:29

    Bonjour

    j'aimerai faire un script qui affiche une liste dans lequel chaque personnes de la liste a un numéros d'entré qui lui correspond (pour chaque champs) 

    exemple :

    entre un numero : 2
    
    eleve : Leo
    statut : etudiant 
    matiere :shell
    
    ------
    
    entre un numero : 15
    eleve : fox
    statut : rien 
    matiere : rien 

    les données sont dans un fichier cvs. Pour afficher la petite liste, j'ai réussi avec une boucle while avec à l'interieur 3 printf associé à chaque champs, $eleve $statut et $matiere 

    Pour le numéro d'entré, j'ai pensé à faire

    awk '{cnt=0 ; for(i=1; i<=NF; i++) {if($i != "") {cnt++}} {print NR }}' IFS="," eleve.csv

    mais ca ne fonctionne pas. Je n'arrive pas à mettre un champ pour le numéros 


    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2020 à 14:48:34

      salut,

      l'IFS ne sert pas dans awk; ça ne sert que dans le shell.

      pourquoi 3 printf ? un seul devrait suffire. Ou alors ton code est mal écrit.

      $ nl -h t -w 1 -s ',' tonFichier >/tmp/tonFichier
      $ mv /tmp/tonFichier tonFichier
      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

      Anonyme
        26 mai 2020 à 15:56:59

        bonjour,

        les trois printf pour afficher la liste 

        cela fait que pour chaque élèves du fichier csv, on peut avoir un affichage comme je l'avais mis dans mon précédent message. La petite fonctionnalité que j'aimerai rajouter est que chaque élève soit représentés par un chiffre que l'utilisateur devra mettre dans le terminal. Si LEO est représenté par le champ 1, je devrai avoir

        c'est pour cela que j'utilisais la commande awk 

        par contre le code donné en haut il déplace le fichier ?





        -
        Edité par Anonyme 27 mai 2020 à 11:32:52

        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2020 à 18:35:50

          printf 'var1: %s\nvar2: %s\nvarN+1: %s\n' "$var_1" "$var_2" "$var_N+1"

          et le quatrième ne sert à rien non plus.

          le code donné écrase le fichier original, mais ce n'est pas obligatoire.

          plus simple :

          #!/bin/bash
          
          mapfile -O 1 -t tabFic <tonFichier
          read -p 'quel numéro : ' num
          IFS=',' read -ra L_ev <<< "${tabFic[$num]}"
          printf 'nom: %s\nstatus: %s\nmatière: %s\n' "${L_ev[@]}"
          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

          numéros d'entré

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown