Programmation bash

Bonjour à tous! je suis debutant en programmation bash. J'ai un programme qui me fais tourner depuis 2 jours. Je voudrai que quelqu'un m'aide si possible. Merci voici l'enoncé:
On dispose d'un fichier personnes dont chaque ligne est constituée du prénom et du genre (m pour masculin, f pour feminin) d'un individu.
exemple: $ cat personnes
arthur m
pierre m
dominique f
paule f
sylvie f
jean m
$
Ecrire un programme qui crée à partir de ce fichier, un fichier garcons contenant uniquement les prénoms des garcons et un fichier filles contenant uniquement les prénoms des filles.
Exemple: $ tripersonnes.

Je vous serai reconnaissant de bien vouloir m'aider.

6 réponses

  1. Tu peux faire voir ce que tu as déjà fais?
    Car sinon, je vais te donner un truc qui n'as rien à voir avec ton début ^^
    Alors ca marchera certes, mais tu n'auras rien appris :P
    0
    1. Modérateur
      Salut,

      Et si tu nous montrais d'abord ce que tu fait depuis 2 jours, non ?
      0
      1. voici ce que j'ai fais
        J'ai creé d'abord le fichier personnes avec les prénoms comme indiqué en faisant

        cat personnes>
        arthur m
        dominique f
        etc..
        ensuite j'ai fais
        while read personnes
        if[[$2=m]]
        then cat> garcons
        cp $1 garcons
        then cat> filles
        cp $1 filles
        fi
        echo"garcons:" cat garcons
        echo"filles:" cat filles

        merci
        0
        1. Modérateur
          Il faut que tu fasses ça en bash pur ou des commandes comme "awk" sont tolérées ?
          0
      2. Il faut que je le fasse en bash.Merci
        0
        1. Modérateur
          Pour reprendre ton script. il faut que tu comprennes bien à quoi sert chaque commande et quelles sont leurs fonctions respectives.

          cat sert à afficher un fichier et éventuellement à en créer un interactivement comme tu l'as fait pour le fichier "personnes", mais ça ne marche pas depuis un script, ou du moins pas comme tu t'y es pris ;-(

          cp sert à copier/dupliquer un fichier , mais pas à écrire dans un fichier. Pour ça on utilise "echo blabla > fichier" ou "echo blabla >> fichier" pour ajouter à la suite des données déjà existantes.

          Voilà un exemple pour ton sujet :

          jp@MDK:~/tmpfs ssh$ cat personnes
          arthur m
          pierre m
          dominique f
          paule f
          sylvie f
          jean m
          jp@MDK:~/tmpfs ssh$ cat foo.sh
          #! /bin/sh
          
          #set -xv
          
          while read NOM SEX
          do
          if [ "$SEX" == "m" ]
          then
          echo "$NOM" >> garçons.txt
          else
          echo "$NOM" >> filles.txt
          fi
          done < personnes
          
          jp@MDK:~/tmpfs ssh$ ./foo.sh
          
          jp@MDK:~/tmpfs ssh$ cat garçons.txt
          arthur
          pierre
          jean
          
          jp@MDK:~/tmpfs ssh$ cat filles.txt
          dominique
          paule
          sylvie
          
          jp@MDK:~/tmpfs ssh$


          ;-))
          0
          1. Merci infiniment pour ton coup de main. Je vais essayer de comprendre ton script.merci beaucoup pour ta disponibilité.
            0