[script bash]
Fermé
the_moon
-
24 mars 2005 à 14:37
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 31 mars 2005 à 19:17
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 31 mars 2005 à 19:17
A voir également:
- [script bash]
- Script vidéo youtube - Guide
- Retour à la ligne bash ✓ - Forum Shell
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Bash permission non accordée - Forum Shell
14 réponses
J'ai encore une question:
comment faire pour tester si une commande "GREP" renvoie quelque chose ou rien ?
j'ai testé:
if ( (grep motif fichier) = xxx )
then...
mais je ne sais pas par quoi remplacer xxx !
Est ce que quelqu'un pourrait me dire ce que je dois mettre ?
quelque chose du genre null ou void, mais en script !
Merci beaucoup !
comment faire pour tester si une commande "GREP" renvoie quelque chose ou rien ?
j'ai testé:
if ( (grep motif fichier) = xxx )
then...
mais je ne sais pas par quoi remplacer xxx !
Est ce que quelqu'un pourrait me dire ce que je dois mettre ?
quelque chose du genre null ou void, mais en script !
Merci beaucoup !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 mars 2005 à 19:11
24 mars 2005 à 19:11
Salut,
Tiens ton 1er post il est là :
http://www.commentcamarche.net/forum/affich-1370279
Commences par regarder les réponses qu'on t'a données, et adaptes...
Tiens ton 1er post il est là :
http://www.commentcamarche.net/forum/affich-1370279
Commences par regarder les réponses qu'on t'a données, et adaptes...
Merci pour le lien, mais les questions que je pose ici ne sont pas tout à fait les mêmes que sur l'autre topic (j'avais regardé toutes les réponses qui m'avaient été données, d'ailleurs le dernier message posté est de moi). Ces réponses m'ont d'ailleurs aidé à avancer, mais j'ai besoin de précisions.
J'ai posé ici des questions qui ressemblent, mais avec une nuance que je n'arrive pas à trouver. Et je ne sais pas comment "adapter" les réponses à mes 1ères questions pour répondre à celles-ci !
Sur l'autre topic, je demandais comment extraire une partie de la ligne pour la modifier, ici je demande comment acceder à cette ligne (c'est à dire, il faut rechercher un nom dans la 1ère partie de chaque ligne d'un fichier texte. Je sais faire une recherche dans un fichier, je peux séparer les différentes parties de la ligne (grâce au "cut" qui m'a été indiqué dans l'autre topic), mais je ne sais toujours pas rechercher dans une partie de la ligne !)
Et je n'avais pas posé la question 1) sur l'autre topic, et la question 4) n'avait pas eu de réponse (j'avais posé de nouvelles questions auxquelles personne n'avait répondu !)
Donc si quelqu'un connait la réponse aux 4 questions du 1er message de ce topic, merci d'y répondre ici, je n'ai toujours pas la solution !
J'ai posé ici des questions qui ressemblent, mais avec une nuance que je n'arrive pas à trouver. Et je ne sais pas comment "adapter" les réponses à mes 1ères questions pour répondre à celles-ci !
Sur l'autre topic, je demandais comment extraire une partie de la ligne pour la modifier, ici je demande comment acceder à cette ligne (c'est à dire, il faut rechercher un nom dans la 1ère partie de chaque ligne d'un fichier texte. Je sais faire une recherche dans un fichier, je peux séparer les différentes parties de la ligne (grâce au "cut" qui m'a été indiqué dans l'autre topic), mais je ne sais toujours pas rechercher dans une partie de la ligne !)
Et je n'avais pas posé la question 1) sur l'autre topic, et la question 4) n'avait pas eu de réponse (j'avais posé de nouvelles questions auxquelles personne n'avait répondu !)
Donc si quelqu'un connait la réponse aux 4 questions du 1er message de ce topic, merci d'y répondre ici, je n'ai toujours pas la solution !
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
24 mars 2005 à 22:24
24 mars 2005 à 22:24
On m'a proposé un cut, qui permet de récuperer juste une partie de la ligne, mais je ne sais pas comment lire le fichier en colonnes.
Avec awk tu peux afficher par colonne :
Exemple pour un fichier nommé essai exactement disposé comme ça:
Avec les variable $1,$2,$3 etc... de awk tu as les colonnes (avec l'espace comme séparateur, je suppose que ça peut se changer :
Ca retournera
nom_fichier_1
nom_fichier_2
nom_fichier_3
Par exemple, si je veux récuperer le commentaire associé à "nom_fichier_3", la fonction doit rechercher quelle ligne démarre par ce nom de fichier (ici la 3ème), puis me placer sur cette ligne pour ensuite pouvoir faire un "cut" et récuperer uniquement le commentaire. Quelle commande puis-je utiliser pour ça ?
Bien qu'il doit exister une manière plus simple, tu peux faire ça avec des combinaisons de grep et awk:
$0 c'est la variable awk qui signifie toutes les colonnes de la ligne. FNR c'est le numero de la ligne en cours. Avec ça tu lis le fichier avec ses numero de ligne au début (en gros avec ça tu fais "afficher le numéro de la ligne+la ligne entière). Ensuite le grep selectionne la ligne correspondant au nom du fichier, puis un nautre grep avec une expression régulière qui ne selectionne que les chiffres en tout début de la ligne, donc ici, juste le numero de la ligne.
Pour le trois, je te propose de faire comme ceci:
Si tu veux supprimer la ligne 3:
En gros tu recopies ton fichier sur lui en lui appliquant un filtre avec grep en lui disant d'ignorer ce qui commence par 3. Mais hélas ça te posera problème dés que tu commencera à avoir des lignes supérieures à dix (car cette formule supprimera aussi les lignes 30,31 etc... et aussi les lignes 300,301 etc...
Et pour le quatre eh ben.... Soit tu modifies la source de /bin/rm :-) soit tu ecris une appli qui s'execute chaque minutes dans le cron et qui vérifie l'intégralité des fichiers du repertoire par rapport à ton fichier spécifique. J'ai pas d'autre idée....
Avec awk tu peux afficher par colonne :
Exemple pour un fichier nommé essai exactement disposé comme ça:
nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_3 ; commentaire associé au fichier 3
Avec les variable $1,$2,$3 etc... de awk tu as les colonnes (avec l'espace comme séparateur, je suppose que ça peut se changer :
cat essai | awk '{print $1}'
Ca retournera
nom_fichier_1
nom_fichier_2
nom_fichier_3
Par exemple, si je veux récuperer le commentaire associé à "nom_fichier_3", la fonction doit rechercher quelle ligne démarre par ce nom de fichier (ici la 3ème), puis me placer sur cette ligne pour ensuite pouvoir faire un "cut" et récuperer uniquement le commentaire. Quelle commande puis-je utiliser pour ça ?
Bien qu'il doit exister une manière plus simple, tu peux faire ça avec des combinaisons de grep et awk:
cat essai | awk '{print FNR $0}' | grep 'nom_fichier_3' | grep -oE '^[0-9]+'
$0 c'est la variable awk qui signifie toutes les colonnes de la ligne. FNR c'est le numero de la ligne en cours. Avec ça tu lis le fichier avec ses numero de ligne au début (en gros avec ça tu fais "afficher le numéro de la ligne+la ligne entière). Ensuite le grep selectionne la ligne correspondant au nom du fichier, puis un nautre grep avec une expression régulière qui ne selectionne que les chiffres en tout début de la ligne, donc ici, juste le numero de la ligne.
Pour le trois, je te propose de faire comme ceci:
Si tu veux supprimer la ligne 3:
cat essai | awk '{print FNR $0}' | grep -E '^[^3]+' > essai
En gros tu recopies ton fichier sur lui en lui appliquant un filtre avec grep en lui disant d'ignorer ce qui commence par 3. Mais hélas ça te posera problème dés que tu commencera à avoir des lignes supérieures à dix (car cette formule supprimera aussi les lignes 30,31 etc... et aussi les lignes 300,301 etc...
Et pour le quatre eh ben.... Soit tu modifies la source de /bin/rm :-) soit tu ecris une appli qui s'execute chaque minutes dans le cron et qui vérifie l'intégralité des fichiers du repertoire par rapport à ton fichier spécifique. J'ai pas d'autre idée....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
24 mars 2005 à 22:28
24 mars 2005 à 22:28
J'oublie de citer mes sources :-)
http://lea-linux.org/dev/awk.html
http://lea-linux.org/dev/awk.html
Merci beaucoup !
Au sujet de la question 3, ça me pose un problème de créer un autre fichier pour les commentaires, car le fichier contenant ces commentaires doit toujours avoir le même nom lors de l'execution du programme (et j'aimerais avoir le moins de fichiers possibles à la fin). Ca necessite que je passe par un fichier temporaire, puis que je remplace mon fichier initial par le fichier temporaire que je pourais alors effacer.
Et je dois pouvoir mettre plus de 10 lignes dans un même fichier, donc je ne peux pas simplement ignorer les lignes qui commencent par un chiffre donné.(je ne sais pas combien il en faudra, mais au moins une trentaine)
Pour la question 4, je peux rajouter une option dans mon programme qui ferait un "rafraichissement" du fichier de commentaires en fonction des fichiers qui ont pu être enlevés du dossier. Le problème n'est pas d'effectuer la suppression en temps réel, mais d'arriver à supprimer la ligne qui correspond à un fichier qui n'existe plus. Et c'est ça que je ne sais pas faire !
Mais si j'arrive à faire ce que je demande dans la question 3 (je vais tester avec awk et grep), je pense que je pourrai y arriver.
Et au sujet de la question 1, est-ce que c'est possible à faire ?
En tout cas merci pour cette longue réponse !
Au sujet de la question 3, ça me pose un problème de créer un autre fichier pour les commentaires, car le fichier contenant ces commentaires doit toujours avoir le même nom lors de l'execution du programme (et j'aimerais avoir le moins de fichiers possibles à la fin). Ca necessite que je passe par un fichier temporaire, puis que je remplace mon fichier initial par le fichier temporaire que je pourais alors effacer.
Et je dois pouvoir mettre plus de 10 lignes dans un même fichier, donc je ne peux pas simplement ignorer les lignes qui commencent par un chiffre donné.(je ne sais pas combien il en faudra, mais au moins une trentaine)
Pour la question 4, je peux rajouter une option dans mon programme qui ferait un "rafraichissement" du fichier de commentaires en fonction des fichiers qui ont pu être enlevés du dossier. Le problème n'est pas d'effectuer la suppression en temps réel, mais d'arriver à supprimer la ligne qui correspond à un fichier qui n'existe plus. Et c'est ça que je ne sais pas faire !
Mais si j'arrive à faire ce que je demande dans la question 3 (je vais tester avec awk et grep), je pense que je pourrai y arriver.
Et au sujet de la question 1, est-ce que c'est possible à faire ?
En tout cas merci pour cette longue réponse !
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
24 mars 2005 à 23:07
24 mars 2005 à 23:07
Ok j'ai trouvé, pour le 3 histoire de ne pas générer de truc bizzare au délà des lignes 9.
Il faut plutôt utiliser l'argument -v pour grep qui permet de ne selectionner que ce qui ne correspond pas au motif.
Alors avec ton fichier essai:
On affiche le contenu du fichier avec ses numeros de ligne au début + deux point (ça peut être une sécurité si tu as un nom de fichier qui commence par un chiffre, et comme ça on se repère avec le double-point pour la suite)
On enlève la ligne trois:
Là s'il ya un chiffre qui suit 3 ça ne marche pas.
Et on enlève les numéros de ligne au début (c'est à dire on ne prend que ce qui commence avec les deux points:
Et on supprime les deux points en sachant que toutes les lignes commencent par ça, et on recopie le tout sur le fichier initial
Il faut plutôt utiliser l'argument -v pour grep qui permet de ne selectionner que ce qui ne correspond pas au motif.
Alors avec ton fichier essai:
nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_3 ; commentaire associé au fichier 3
On affiche le contenu du fichier avec ses numeros de ligne au début + deux point (ça peut être une sécurité si tu as un nom de fichier qui commence par un chiffre, et comme ça on se repère avec le double-point pour la suite)
cat essai | awk '{print FNR ":" $0}'
On enlève la ligne trois:
cat essai | awk '{print FNR ":" $0}' | grep -v ^3[^0-9]+
Là s'il ya un chiffre qui suit 3 ça ne marche pas.
Et on enlève les numéros de ligne au début (c'est à dire on ne prend que ce qui commence avec les deux points:
cat essai | awk '{print FNR ":" $0}' | grep -v ^3[^0-9]+ | grep -oE ':.*'
Et on supprime les deux points en sachant que toutes les lignes commencent par ça, et on recopie le tout sur le fichier initial
cat essai | awk '{print FNR ":" $0}' | grep -v ^3[^0-9]+ | grep -oE ':.*' | cut -c 2- > essai
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
24 mars 2005 à 23:30
24 mars 2005 à 23:30
Et comme tu peux le voir, ça ne passe pas par un fichier temporaire, le fichier se recopie sur lui-même directement après divers traitement.
En fait tu avais le même soucis pour les questions 3 et 4 (supprimer une ligne particulière..)?
Pour la question 1, tu peux demander confirmation avec la methode traditionnelle:
"Êtes vous sûr de vouloir faire ça (y/N)"?
=> Si on entre rien c'est N par défaut, mais on peut répondre Y ou y ou n ou N.
Tu peux utiliser "read" pour lire une réponse au clavier et l'affecter à une variable. Pour les comparaisons de chaîne, voir par là:
http://www.tldp.org/LDP/abs/html/comparison-ops.html
En fait tu avais le même soucis pour les questions 3 et 4 (supprimer une ligne particulière..)?
Pour la question 1, tu peux demander confirmation avec la methode traditionnelle:
"Êtes vous sûr de vouloir faire ça (y/N)"?
=> Si on entre rien c'est N par défaut, mais on peut répondre Y ou y ou n ou N.
Tu peux utiliser "read" pour lire une réponse au clavier et l'affecter à une variable. Pour les comparaisons de chaîne, voir par là:
http://www.tldp.org/LDP/abs/html/comparison-ops.html
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
25 mars 2005 à 00:04
25 mars 2005 à 00:04
Oups non j'ai oublié un E pour un grep (pour les expressions régulières étendues:
Voilà...
cat essai | awk '{print FNR ":" $0}' | grep -Ev ^3[^0-9]+ | grep -oE ':.*' | cut -c 2- > essai
Voilà...
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
25 mars 2005 à 13:54
25 mars 2005 à 13:54
Re-
Tiens voilà une solution pour ton histoire d'effacement d'entrées dans ton fichier commentaire en fonction de l'existence ou non d'un fichier du même nom dans le répertoire courant.
le script :
Tiens voilà une solution pour ton histoire d'effacement d'entrées dans ton fichier commentaire en fonction de l'existence ou non d'un fichier du même nom dans le répertoire courant.
le script :
#! /bin/bash # # Script d'effacement d'entrée dans fichier texte # On récupère avec le filtre "awk" le 1er paramètre ({ print $1 }) # du fichier "fich" en précisant le délimiteur (-F";") for var in `cat fich | awk -F";" '{ print $1 }'` # pour chaque occurence trouvée on l'affiche do echo $var # on teste ensuite si un fichier du même nom existe dans # le répertoire courant if [ -f "$var" ] then # si c'est le cas on confirme son existence echo "Le fichier "$var "existe." # sinon on précise qu'il n'existe pas else echo "Le fichier "$var "n'existe pas !" # on confirme sa suppression echo "Suppression de l'entrée dans le fichier \"fich\"." # et on l'efface. L'option (-i) permet de reécrire dans le fichier sed -i "/$var/d" fich # à chaque suppression d'une entrée on affiche le fichier modifié cat fich fi donel'exemple :
[jp@Mandrake tmpfs]$ ls -l total 12 -rw-r--r-- 1 jp jp 850 mar 25 13:31 fich -rw-r--r-- 1 jp jp 850 mar 25 13:30 fich_origine -rw-r--r-- 1 jp jp 0 mar 25 10:58 nom_fichier_1 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_10 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_12 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_14 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_15 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_16 -rw-r--r-- 1 jp jp 0 mar 25 10:58 nom_fichier_2 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_4 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_5 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_7 -rw-r--r-- 1 jp jp 0 mar 25 13:32 nom_fichier_9 -rwxrw-r-- 1 jp jp 347 mar 25 13:18 script_fich.sh* [jp@Mandrake tmpfs]$ cat fich nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_3 ; commentaire associé au fichier 3 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_6 ; commentaire associé au fichier 6 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_8 ; commentaire associé au fichier 8 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_11 ; commentaire associé au fichier 11 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_13 ; commentaire associé au fichier 13 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 nom_fichier_17 ; commentaire associé au fichier 17 [jp@Mandrake tmpfs]$ ./script_fich.sh nom_fichier_1 Le fichier nom_fichier_1 existe. nom_fichier_2 Le fichier nom_fichier_2 existe. nom_fichier_3 Le fichier nom_fichier_3 n'existe pas ! Suppression de l'entrée dans le fichier "fich". nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_6 ; commentaire associé au fichier 6 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_8 ; commentaire associé au fichier 8 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_11 ; commentaire associé au fichier 11 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_13 ; commentaire associé au fichier 13 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 nom_fichier_17 ; commentaire associé au fichier 17 nom_fichier_4 Le fichier nom_fichier_4 existe. nom_fichier_5 Le fichier nom_fichier_5 existe. nom_fichier_6 Le fichier nom_fichier_6 n'existe pas ! Suppression de l'entrée dans le fichier "fich". nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_8 ; commentaire associé au fichier 8 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_11 ; commentaire associé au fichier 11 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_13 ; commentaire associé au fichier 13 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 nom_fichier_17 ; commentaire associé au fichier 17 nom_fichier_7 Le fichier nom_fichier_7 existe. nom_fichier_8 Le fichier nom_fichier_8 n'existe pas ! Suppression de l'entrée dans le fichier "fich". nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_11 ; commentaire associé au fichier 11 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_13 ; commentaire associé au fichier 13 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 nom_fichier_17 ; commentaire associé au fichier 17 nom_fichier_9 Le fichier nom_fichier_9 existe. nom_fichier_10 Le fichier nom_fichier_10 existe. nom_fichier_11 Le fichier nom_fichier_11 n'existe pas ! Suppression de l'entrée dans le fichier "fich". nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_13 ; commentaire associé au fichier 13 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 nom_fichier_17 ; commentaire associé au fichier 17 nom_fichier_12 Le fichier nom_fichier_12 existe. nom_fichier_13 Le fichier nom_fichier_13 n'existe pas ! Suppression de l'entrée dans le fichier "fich". nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 nom_fichier_17 ; commentaire associé au fichier 17 nom_fichier_14 Le fichier nom_fichier_14 existe. nom_fichier_15 Le fichier nom_fichier_15 existe. nom_fichier_16 Le fichier nom_fichier_16 existe. nom_fichier_17 Le fichier nom_fichier_17 n'existe pas ! Suppression de l'entrée dans le fichier "fich". nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 [jp@Mandrake tmpfs]$ cat fich nom_fichier_1 ; commentaire associé au fichier 1 nom_fichier_2 ; commentaire associé au fichier 2 nom_fichier_4 ; commentaire associé au fichier 4 nom_fichier_5 ; commentaire associé au fichier 5 nom_fichier_7 ; commentaire associé au fichier 7 nom_fichier_9 ; commentaire associé au fichier 9 nom_fichier_10 ; commentaire associé au fichier 10 nom_fichier_12 ; commentaire associé au fichier 12 nom_fichier_14 ; commentaire associé au fichier 14 nom_fichier_15 ; commentaire associé au fichier 15 nom_fichier_16 ; commentaire associé au fichier 16 [jp@Mandrake tmpfs]$
Merci beaucoup, avec ça tout devrait fonctionner !
J'aurai un peu plus tard quelques questions sur la création de pages HTML, parce que je devrai afficher les résultats de l'execution de mon programme sous cette forme, et je n'en ai jamais fait ! mais je vais d'abord rechercher ce qui m'interresse.
A part ça, est-ce qu'il y aurait un moyen SIMPLE de créer des boites de dialogue pour mon programme, pour que les options s'affichent dans des fenetres prévues pour ça plutôt que dans une console ? (mon programme comporte des menus à plusieurs choix et doit permettre d'entrer du texte au clavier)
En fait mon sujet est bizarre parce qu'il précise que les résultats doivent être présentés sur une page HTML, mais il ne précise pas comment l'utilisateur devra choisir ce qu'il veut faire.
Pour le moment tout se fait dans une console, mais j'aimerais bien trouver mieux si c'est faisable !
J'aurai un peu plus tard quelques questions sur la création de pages HTML, parce que je devrai afficher les résultats de l'execution de mon programme sous cette forme, et je n'en ai jamais fait ! mais je vais d'abord rechercher ce qui m'interresse.
A part ça, est-ce qu'il y aurait un moyen SIMPLE de créer des boites de dialogue pour mon programme, pour que les options s'affichent dans des fenetres prévues pour ça plutôt que dans une console ? (mon programme comporte des menus à plusieurs choix et doit permettre d'entrer du texte au clavier)
En fait mon sujet est bizarre parce qu'il précise que les résultats doivent être présentés sur une page HTML, mais il ne précise pas comment l'utilisateur devra choisir ce qu'il veut faire.
Pour le moment tout se fait dans une console, mais j'aimerais bien trouver mieux si c'est faisable !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
29 mars 2005 à 22:44
29 mars 2005 à 22:44
Re-
A part ça, est-ce qu'il y aurait un moyen SIMPLE de créer des boites de dialogue pour mon programme
Yes, tu as "dialog" (basé sur "NCurses") et "Xdialog" (basé sur "Gtk" donc sous "X") :
http://hightek.org/dialog/
http://xdialog.dyns.net/
Tiens ça c'est pour un aperçu de ce que peut produire "Xdialog" dans un terminal "Konsole" :
(Enchaîne ces deux commandes))
Xdialog --default-no --help "Attention l'effacement d'un fichier peut avoir des conséquences sur le déroulement de votre programme" --yesno "Êtes vous sûr de vouloir effacer ce fichier ?" 0 0
Puis ça :
Xdialog --no-tags --checklist "Liste des films proposés" 0 0 10 1 Film1 off 2 Film2 off 3 Film3 off 4 Film4 off 5 Film5 off 6 Film6 off 7 Film7 off 8 Film8 off 9 Film9 off 10 Film10 off
Ces exemples sont extraits du magazine "Linux Pratique n°24" :
http://www.linuxmag-france.org/produit.php?produit=361
Avec ça tu devrais pouvoir faire un truc sympa ;-))
A part ça, est-ce qu'il y aurait un moyen SIMPLE de créer des boites de dialogue pour mon programme
Yes, tu as "dialog" (basé sur "NCurses") et "Xdialog" (basé sur "Gtk" donc sous "X") :
http://hightek.org/dialog/
http://xdialog.dyns.net/
Tiens ça c'est pour un aperçu de ce que peut produire "Xdialog" dans un terminal "Konsole" :
(Enchaîne ces deux commandes))
toi=$(Xdialog --stdout --inputbox "T'es qui toi ?" 0 0) Xdialog --msgbox "Bonjour $toi" 0 0Essaie ça ensuite :
Xdialog --default-no --help "Attention l'effacement d'un fichier peut avoir des conséquences sur le déroulement de votre programme" --yesno "Êtes vous sûr de vouloir effacer ce fichier ?" 0 0
Puis ça :
Xdialog --no-tags --checklist "Liste des films proposés" 0 0 10 1 Film1 off 2 Film2 off 3 Film3 off 4 Film4 off 5 Film5 off 6 Film6 off 7 Film7 off 8 Film8 off 9 Film9 off 10 Film10 off
Ces exemples sont extraits du magazine "Linux Pratique n°24" :
http://www.linuxmag-france.org/produit.php?produit=361
Avec ça tu devrais pouvoir faire un truc sympa ;-))
Merci beaucoup, je vais tester tout ça.
J'ai encore une question au sujet de mon programme:
il doit pouvoir lister le contenu d'un répertoire de base (et de tous les sous répertoires qu'il contient).
Pas de problème pour le listage, j'utilise "ls" avec les options que je veux (j'en utilise 6 ou 7 en même temps, et ça marche !)
Par contre, certains fichiers (pas tous) ont un commentaire dans un fichier texte qui se situe dans le même répertoire. (comme ceux que je cherchais à supprimer plus haut, à ce sujet merci beaucoup, les réponses fonctionnent parfaitement).
Est-ce qu'il y aurait un moyen pour que le "ls" affiche les éventuels commentaires sur la même ligne que le fichier concerné ?
c'est à dire que si j'ai un répertoire A contenant les fichiers 1,2, 3 et le fichier de commentaires (qui ne comporte qu'un seul commentaire pour le fichier 2 par exemple), je voudrais que le résultat de la commande "ls" m'affiche
Pour les alinéas, j'ai trouvé comment faire, mais je ne sais pas récuperer les commentaires pour qu'ils apparaissent sur la même ligne que le fichier concerné au moment du listage (sachant que tous les fichiers n'ont pas de commentaire)
J'essaye d'imaginer comment faire, mais je ne vois pas trop: je ne sais pas s'il est possible "d'arreter" le listage entre chaque fichier pour tester si son nom ne se retrouve pas dans le fichier de commentaires.
Est-ce que vous auriez une idée sur la manière de proceder et sur les commandes à utiliser ? (est-ce que mon idée est réalisable ?)
Merci !
J'ai encore une question au sujet de mon programme:
il doit pouvoir lister le contenu d'un répertoire de base (et de tous les sous répertoires qu'il contient).
Pas de problème pour le listage, j'utilise "ls" avec les options que je veux (j'en utilise 6 ou 7 en même temps, et ça marche !)
Par contre, certains fichiers (pas tous) ont un commentaire dans un fichier texte qui se situe dans le même répertoire. (comme ceux que je cherchais à supprimer plus haut, à ce sujet merci beaucoup, les réponses fonctionnent parfaitement).
Est-ce qu'il y aurait un moyen pour que le "ls" affiche les éventuels commentaires sur la même ligne que le fichier concerné ?
c'est à dire que si j'ai un répertoire A contenant les fichiers 1,2, 3 et le fichier de commentaires (qui ne comporte qu'un seul commentaire pour le fichier 2 par exemple), je voudrais que le résultat de la commande "ls" m'affiche
/A 1 2 commentaire associé au fichier 2 3
Pour les alinéas, j'ai trouvé comment faire, mais je ne sais pas récuperer les commentaires pour qu'ils apparaissent sur la même ligne que le fichier concerné au moment du listage (sachant que tous les fichiers n'ont pas de commentaire)
J'essaye d'imaginer comment faire, mais je ne vois pas trop: je ne sais pas s'il est possible "d'arreter" le listage entre chaque fichier pour tester si son nom ne se retrouve pas dans le fichier de commentaires.
Est-ce que vous auriez une idée sur la manière de proceder et sur les commandes à utiliser ? (est-ce que mon idée est réalisable ?)
Merci !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
31 mars 2005 à 19:17
31 mars 2005 à 19:17
Re-
Essaie ça, à adapter à ton cas, moi j'ai fais avec les moyens du bord ;-))
Le fichier de commentaires s'appelle "fich_origine"
Le script :
Essaie ça, à adapter à ton cas, moi j'ai fais avec les moyens du bord ;-))
Le fichier de commentaires s'appelle "fich_origine"
Le script :
#! /bin/bash # scriipt.sh # script d'essai # On liste le répertoire sur une colonne (ls -1) # et on filtre les fichiers commençant par "nom" # pour les besoins de l'exemple, à adapter sinon. for fich in `ls -1 | grep "^nom"` do # on récupère la variable "$fich" qui nous sert # de motif pour "grep" afin de récupérer au travers de "awk" # le commentaire associé "$2" dans la variable "$film" film=`grep "$fich" fich_origine | awk -F";" '{ print $2 }'` # puis on affiche les 2 variables séparées par deux points echo $fich ":" $film donel'exemple :
[jp@Mandrake tmpfs]$ ls -1 fich fich~ fich_origine fich_origine~ nom_fichier_10.avi nom_fichier_12.avi nom_fichier_14.avi nom_fichier_15.avi nom_fichier_16.avi nom_fichier_1.avi nom_fichier_2.avi nom_fichier_4.avi nom_fichier_5.avi nom_fichier_7.avi nom_fichier_9.avi scriipt.sh scriipt.sh~ script_fich.sh script_fich.sh~ try try~ [jp@Mandrake tmpfs]$ cat fich_origine nom_fichier_1.avi ; commentaire associé au fichier 1 nom_fichier_2.avi ; commentaire associé au fichier 2 nom_fichier_3.avi ; commentaire associé au fichier 3 nom_fichier_4.avi ; nom_fichier_5.avi ; commentaire associé au fichier 5 nom_fichier_6.avi ; commentaire associé au fichier 6 nom_fichier_7.avi ; commentaire associé au fichier 7 nom_fichier_8.avi ; commentaire associé au fichier 8 nom_fichier_9.avi ; commentaire associé au fichier 9 nom_fichier_10.avi ; commentaire associé au fichier 10 nom_fichier_11.avi ; commentaire associé au fichier 11 nom_fichier_12.avi ; commentaire associé au fichier 12 nom_fichier_13.avi ; commentaire associé au fichier 13 nom_fichier_14.avi ; commentaire associé au fichier 14 nom_fichier_15.avi ; nom_fichier_16.avi ; commentaire associé au fichier 16 nom_fichier_17.avi ; commentaire associé au fichier 17 [jp@Mandrake tmpfs]$ sh scriipt.sh nom_fichier_10.avi : commentaire associé au fichier 10 nom_fichier_12.avi : commentaire associé au fichier 12 nom_fichier_14.avi : commentaire associé au fichier 14 nom_fichier_15.avi : nom_fichier_16.avi : commentaire associé au fichier 16 nom_fichier_1.avi : commentaire associé au fichier 1 nom_fichier_2.avi : commentaire associé au fichier 2 nom_fichier_4.avi : nom_fichier_5.avi : commentaire associé au fichier 5 nom_fichier_7.avi : commentaire associé au fichier 7 nom_fichier_9.avi : commentaire associé au fichier 9 [jp@Mandrake tmpfs]$;-))