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

  • Votes
  • Date
  • Date décroissante
  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
    1. Modérateur
      Salut,

      Et si tu nous montrais d'abord ce que tu fait depuis 2 jours, non ?
      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
        1. Modérateur
          Il faut que tu fasses ça en bash pur ou des commandes comme "awk" sont tolérées ?
      2. 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$


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