Script en unix

Fermé
IAG Messages postés 11 Date d'inscription lundi 28 mars 2005 Statut Membre Dernière intervention 19 janvier 2010 - 18 avril 2005 à 22:47
 SKZ - 20 avril 2005 à 21:45
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
A voir également:

5 réponses

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
bacchuss Messages postés 1162 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 6 avril 2009 190
19 avril 2005 à 10:17
oui, mais encore...
il a quelle forme ton carnet ?
c'est un fichier, une BDD ??
0
Meeerdeeee. J'ai foiré ma balise. Dzol.
0
IAG Messages postés 11 Date d'inscription lundi 28 mars 2005 Statut Membre Dernière intervention 19 janvier 2010 2
20 avril 2005 à 00:23
merci beaucoup ca m'aide beaucoup mais juste je veux que cat se base sur les : comment dois-je faire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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