Programmation bash

chilby -  
 chilby -
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. xav3601 Messages postés 3390 Statut Membre 312
     
    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
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Et si tu nous montrais d'abord ce que tu fait depuis 2 jours, non ?
    0
  3. chilby
     
    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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Il faut que tu fasses ça en bash pur ou des commandes comme "awk" sont tolérées ?
      0
  4. chilby
     
    Il faut que je le fasse en bash.Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  7. chilby
     
    Merci infiniment pour ton coup de main. Je vais essayer de comprendre ton script.merci beaucoup pour ta disponibilité.
    0