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
SKZ - 20 avril 2005 à 21:45
A voir également:
- Script en unix
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
- Executeur de script - Télécharger - Édition & Programmation
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
(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
ou un simple echo $LIGNES après le grep.
Pour supprimer, commande grep.
Tu fais un
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...)
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...)
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
19 avril 2005 à 10:17
oui, mais encore...
il a quelle forme ton carnet ?
c'est un fichier, une BDD ??
il a quelle forme ton carnet ?
c'est un fichier, une BDD ??
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
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 ?
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 :
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 :
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
Malheursement, ça t'affichera :
NOM:N0, rue Adresse:Ville,
Les ":" sont resté.
Soluce : tu "pipe" vers sed (caractère | )
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 | )