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

Linux Discussion :

Test de vérification sur deux champs


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 44
    Points
    44
    Par défaut Test de vérification sur deux champs
    Bonjours,

    Mon mini-projet a pour thème la gestion du répertoire téléphonique
    J'ai coincé dans un tel test


    J'ai un fichier contenant des enregistrement et le format de chaque ligne est la suivante :

    numéro de téléphone : code de département : nom : prénom : adresse : date de naissance : mail

    l'énoncé est le suivant :
    Vérifier si une personne située dans un certain département est présent dans le repertoire, si la personne n'existe pas afficher un message correspendant

    Voici la solution que j'ai fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #!/bin/bash
    code=cut-f2-d:DATA
    if(grep $1 DATA>cor)
    then 
     
    if(test $2-eq$code)
    then
    echo EXISTE
    else 
    echo N''EXISTE PAS
    fi 
     
    else 
    echo N''EXISTE PAS
    fi 
    rm cor
    * cor c'est une corbeille temporaire car je ne sais pas le chemin de la vrai corbeil ^^

    Lorsque j'exécute ce script quelque soit les parametre que je le donne la réponse sera toujours EXISTE

    Vérifier avec moi svp ce script

    _______________________________

    Mon deuxième problème est que je trouve pas comment réaliser une tri sur ce fichier avec tout les conditions proposé, je vous donne l'énoncé

    Trier les enregistrements selon le nom en cas des deux enregistrements avec le même nom, trier les enregistrement par rapport à la valeur du département. Si l'égalité persiste encore, les trier par rapport au numéro de téléphone

    Pour que je suis pas passif j'ai essayé avec
    mais j'ai pas implémenter le code alors ma idée est de tester si on a dans le fichier deux noms kif kif si ce n'est pas le cas un test imbriquer sur les valeurs de département puis en utlise la commande sort pour trier les lignes du fichiers sinon on effectue la tri dès le premier test

    @++
    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 21
    Points
    21
    Par défaut
    Bonjour
    il est tard , j'ai pas vraiment réfléchi mais ca me parait étrange ta syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if [ $# -ne 1 ]; then
    echo "mauvais nombre d'arguments"
    echo "$0 utilisateur"
    exit 1
    fi
    if grep "$1" tobfichier >/dev/null;then
    echo existe
    else echo existepas
    fi
    pour le deuxieme ton deuxieme probleme j'ai pas tout lu mais demain promis

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 584
    Points : 19 462
    Points
    19 462
    Par défaut
    direct,

    Je crois pouvoir dire que nous aurions apprécié d'avoir un échantillon du fichier à traiter

    code=$(cut d ':' -f2 DATA) (cf. man bash - Substitution de commandes)
    Pour que grep n'effectue pas d'affichage s'il trouve au moins une occurrence, utilisons l'option -q
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    VERIF() {
       [ $1 -gt 1 ] && {
          echo "Cette entrée ne doit comporter qu'un seul élément"
          exit
       }
    }
    # "Vérifier si une personne située dans un certain département"
    read -p "Quelle personne ? " -a personne
    VERIF "${#personne[@]}" || {
       read -p "Quel département ? " -a departement
       VERIF "${#departement[@]}" || {
          recherche="${departement}:${personne}"
          if cut -d':' -f2,3 DATA | grep -q "$recherche"
            then
    # application du  tri
               sed -n "/[^:]*:${recherche}:.*/p" DATA | sort -k3d -k2n -k1
            else
    # "si la personne n'existe pas afficher un message correspendant"
               echo "Il n'y a pas de $personne habitant dans $departement dans la liste"
          fi
       }
    }

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 44
    Points
    44
    Par défaut
    Bonjours, je vais essayer avec ça merci les gars ^^

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 043
    Points
    31 043
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par direct Voir le message
    * cor c'est une corbeille temporaire car je ne sais pas le chemin de la vrai corbeil ^^
    T'as les répertoires "/tmp" et "~/tmp" qui sont faits pour ça. Tu devrais cependant rajouter "$$" (n° de processus en cours) à ton nom de fichier pour éviter les collisions (que se passe-t-il pour "cor" si tu lances 2 fois ton script en parallèle ???)

    Tu devrais aussi apprendre l'utilisation des backquottes =>
    var=`ls -l`
    echo "$var"

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 21
    Points
    21
    Par défaut
    Bonjour a tous
    EN voyant ton code N-bah(, je me demande si il a pas plus simple pour recuperer l'argument en nombre ?
    tu l'as fait avec un tableau
    si je comprend bien ce qu'il fait
    $1 -gt 1 && quitte l'argument passé a fonction vaut plus de un argument.
    read -a => tableau => $personne =>${#personne[*]}=>
    donc recuperation de 1 puisque que un element dans le tableau .

    Je ne critique en rien loind de la , mais pour mon information , je me demandais si il y avait pas plus simple.
    Bien à vous

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 584
    Points : 19 462
    Points
    19 462
    Par défaut
    En passant par 'read', je n'ai pas trouvé plus simple.
    Il est beaucoup plus compliqué de récupérer le nombre d'éléments d'un variable "plate" , car les espaces n'y sont pas distingués des caractères alphanumériques, et pour laquelle il faudra s'assurer qu'il n'y a qu'un espace entre les caractères, et aucun au début et à la fin, puis compter le nombre d'espaces plus un...(pfiou!!!), contrairement à un tableau pour lequel le nombre d'espaces n'est pas significatif.

    Mais je suis ouvert à toute suggestion...

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 043
    Points
    31 043
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    En passant par 'read', je n'ai pas trouvé plus simple.
    Il est beaucoup plus compliqué de récupérer le nombre d'éléments d'un variable "plate" , car les espaces n'y sont pas distingués des caractères alphanumériques, et pour laquelle il faudra s'assurer qu'il n'y a qu'un espace entre les caractères, et aucun au début et à la fin, puis compter le nombre d'espaces plus un...(pfiou!!!), contrairement à un tableau pour lequel le nombre d'espaces n'est pas significatif.

    Mais je suis ouvert à toute suggestion...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var="    bla    cra       ella         "
    set $var
    echo $#

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 584
    Points : 19 462
    Points
    19 462
    Par défaut
    [mauvaise foi]
    C'est bien ce que je disais : c'est beaucoup plus compliqué !
    [/mauvaise foi]

Discussions similaires

  1. effectuer un test sur deux champ
    Par patmar83 dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/04/2009, 22h45
  2. Tri sur deux champs en même temps
    Par Azharis dans le forum Access
    Réponses: 8
    Dernier message: 11/01/2006, 13h10
  3. [MYSQL] Problème ORDER BY sur deux champs
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 8
    Dernier message: 14/10/2005, 16h46
  4. pb avec select sur deux champs
    Par graphicsxp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/03/2005, 15h30
  5. contrainte sur deux champs d'une table
    Par bdkiller dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/09/2004, 18h26

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