Script en unix

IAG Messages postés 11 Statut Membre -  
 SKZ -
salut tout le monde
je veux faire troix script en commande unix pour faire un carnet d'adresse
1er pour ajouter une personne
2eme pour afficher une personne
3eme pour supprimer une personne
je serai tres reconnaissan de votre aide

5 réponses

  1. SKZ
     
    En shell, le plus simple, est un fichier.

    L'idée la plus simple je pense, est de faire un premier script, en utilisant echo et read pour écrire/lire les différent champs (nom, prénom, etc...)

    ensuite un
    echo "$NOM $PRENOM ..." | cat >> carnet_adresse

    (eventuellement, à la place de carnet_adresse, tu met $1, ce sera un argument du script).

    pour retrouver les lignes dans le fichier, commande grep :
    LIGNES=`grep "$1" carnet_adresse`
    Où LIGNES contiendra les lignes qui matchent le pattern passé au script dans le premier argument. Ensuite, si tu veux faire de la présentation, tu peux utiliser la commande cut</grans>. Tu peux alors récupérer les différents champs (par contre, attention, par défaut, cut se base sur les espaces).
    Ensuite un
    for $i in $PRENOMS do echo $i done

    ou un simple echo $LIGNES après le grep.

    Pour supprimer, commande grep.
    Tu fais un
    grep -v "QQchose" carnet_adresse > tmp_file
    \mv tmp_file carnet_adresse

    La première ligne recopie le contenue du fichier carnet adresse SAUF les lignes qui contienne la chaîne de caractère "QQchose" (option -v). Si c'est la ligne à supprimer, tu supprime cette ligne. Si ce n'est qu'un prénom, tu supprime toutes lignes contenant ce prénom (mais aussi si c'est le nom de la rue...)
    1
  2. bacchuss Messages postés 1165 Statut Membre 190
     
    oui, mais encore...
    il a quelle forme ton carnet ?
    c'est un fichier, une BDD ??
    0
  3. SKZ
     
    Meeerdeeee. J'ai foiré ma balise. Dzol.
    0
  4. IAG Messages postés 11 Statut Membre 2
     
    merci beaucoup ca m'aide beaucoup mais juste je veux que cat se base sur les : comment dois-je faire ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. SKZ
     
    T'as mal tapé ou lu ?
    C'est pas CAT c'est CUT !! Attention, viens pas dire que ça marche pas !! :-P :-P

    Bref...
    Comme on dis : donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute ça vie.

    Tu fais, sur la console, :
    $ man cut
    (Ou éventuellement, si c'est "cassé", http://www.google.fr et tu cherche "man unix".
    On touve le titre :
    "Unix man pages: cut (1) " où (1) signifie commande de catégorie 1, comme ls, cat, mkdir...
    (2 : fonction système (language C), 3 : fonction standard language C, etc...)
    Y'a 8 ou 9 catégorie (dont les commandes réservées à root, les commandes X, etc...), mais les plus fournies sont les trois premières.

    Bref, 3ième alinéa de la man page, section SYNOPSIS :
           cut  {-f  field-list, --fields=field-list} [-d delim] [-s]
           [--delimiter=delim]  [--only-delimited]  [--help]  [--ver-
           sion] [file...]

    On voit : --delimiter=delim
    A priori, je pense que c'est ce qu'on cherche (promis, je le fais en direct !!)
    Penchons nous vers cette fameuse option :
           -d, --delimiter delim
                  For -f, fields are separated by the first character
                  in delim instead of by TAB.

    Bon à priori, ça veut dire que tu remplace le caractère de délimitation standard.
    Il te renvoit à -f, je te laisse lire, qui dis en substance que si tu as un fichier de structure style :
    NOM:Prénom:N0, rue Adresse:Ville

    Tu peut faire un
    cut --delimiter=":" -f 1,3-4 

    Malheursement, ça t'affichera :
    NOM:N0, rue Adresse:Ville,
    Les ":" sont resté.
    Soluce : tu "pipe" vers sed (caractère | )
    0