Recherche dans liste fichier
fabien.joubert
Messages postés
35
Statut
Membre
-
dubcek Messages postés 19021 Statut Contributeur -
dubcek Messages postés 19021 Statut Contributeur -
Attention le problème que je vous expose est assez long, merci à tous ceux qui qui prendrons patience
:)
********************************************************************
1)voila mon problème j'ai une liste complète (et longue) comme celle ci dans le fichier list_rules.tmp
4S+06NN 1er samedi sur 4 semaines
4S+07NN 1er dimanche sur 4 semaines
4S+13NN 2eme samedi sur 4 semaines
4S+14NN 2eme dimanche sur 4 semaines
4S+20NN 3eme samedi sur 4 semaines
4S+21NN 3eme dimanche sur 4 semaines
4S-01NN 4eme dimanche sur 4 semaines
4S-02NN 4eme samedi sur 4 semaines
A+01AA Le premier jour de l'annee
A+01O+ le premier jour ouvre de l'annee
A+5NN le 5 janvier
A-01O- le dernier jour ouvre de l'annee
A-05_V le 2ieme vendredi ouvre de l'annee
A-08_V le 8ieme jour ouvre de l'annee
A-27N le 5 decembre
CAT le dernier jour ouvre sem entiere mois
CP vendredi ouvre derniere sem entiere mois
CPON
H+01_N tous les lundis
H+01_S tous les 15 jours le lundi
H+02O+ tous les mardis si chome report+
H+02_N tous les mardis
H+03_N tous les mercredis
H+04_N tous les jeudis
H+05_N tous les vendredis
H+06_N tous les samedis
H+07_N tous les dimanches
J+01LJ Du Lundi au Jeudi
J+01LS Du lundi au samedi
J+01LV Du Lundi au Vendredi
J+01LV_N Du Lundi au Vendredi sauf jours feries
J+01MD Du Mardi au Dimanche
J+01MS Du Mardi au Samedi
J+01NN tous les jours chomes ou feries
J+01_N TLJ sauf Dim et jours feries
J+01_N-1 sauf les lundi
J+01_N-5 tous les jours sauf le vendredi
J+01_N-7 sauf les dimanches
J+02LD tous les 2 jours
J+04LV 4 jour du moi (sauf sam, dim) + report
J+1_N-6 tous les jours sauf le samedi
J+LMV tous les Lu Me Ve
JN01ON tous les jours ouvres
JN01_N tous les jours
JOMA-VE Du Mardi au Vendredi Jours ouvres
LOL le 25 du mois
LOL1 1er semaine
LOL2 1er semaine
LOL21 le 25 du mois
LOL22 le 25 du mois
LOL23 le 25 du mois
LOL24 le 25 du mois
LOL30 tous les 2 jours
LOLM tous les jours
LOLMMD 1er jour de l annee
M+01O+ le premier jour ouvre du mois
M+05O+ le 5eme jour du mois report +
M+1DIMAN Le premier dimanche du mois
M+1LUNDI Le premier lundi du mois
M+1MARDI tous les premiers mardis ouvres du mois
M+1SAMED Le premier samedi du mois
M+1VEN premier vendredi moi
M+2DIMAN Le 2eme dimanche du mois
M+2LUNDI Le 2eme Lundi du mois
M+2MERCR tous les deuxiemes mercredis du mois
M+2SAMED Le 2eme samedi du mois
M+2VEN deuxieme vendredi moi
M+3DIMAN Le 3eme dimanche du mois
M+3LUNDI Le 3eme Lundi du mois
M+3SAMED Le 3eme samedi du mois
M+3VEN troisieme vendredi moi
M+4DIMAN Le 4eme dimanche du mois
M+4LUNDI Le 4eme Lundi du mois
M+4SAMED Le 4eme samedi du mois
M+5DIMAN Le 5eme dimanche du mois
M+5LUNDI Le 5eme Lundi du mois
M+L+1DIM Lundi apres 1er Dimanche mois impair
M-01O- le dernier jour ouvre du mois
M-01_N le dernier jour du mois
M-11VEN ven prec le ven prec dernier Lun du mois
M-1DIMAN Le dernier dimanche du mois
M-1SAM Le dernier Samedi du mois
M-1VEN Le dernier vendredi du mois
M-3JVEN Vendredi dans les 3 derniers j du mois
M-4DN- Dimanche preced dernier mercredi mois
M-4VN- Vendredi preced dernier lundi mois
M-7DIM avant dernier dimanche moi
M-7VEN avant dernier vendredi moi
MI+L+1DI lundi qui suit 1er Dimanche mois impairs
MN01_N le 1er du mois
MN02_N le 2 du mois
MN03_N le 3 du mois
MN04_N le 4 du mois
MN05_N le 5 du mois
MN06_N le 6 du mois
MN07_N le 7 du mois
MN08_N le 8 du mois
MN09_N le 9 du mois
MN10_N le 10 du mois
MN11_N le 11 du mois
MN12_N le 12 du mois
MN13_N le 13 du mois
MN14_N le 14 du mois
MN15_N le 15 du mois
MN16_N le 16 du mois
MN17_N le 17 du mois
MN18_N le 18 du mois
MN19_N le 19 du mois
MN20_N le 20 du mois
MN21_N le 21 du mois
MN22_N le 22 du mois
MN23_N le 23 du mois
MN24_N le 24 du mois
MN25_N le 25 du mois
MN26_N le 26 du mois
MN27_N le 27 du mois
MN28_N le 28 du mois
MN29_N le 29 du mois
MN30_N le 30 du mois
MN31_N le 31 du mois
MN_5_N Dernier jour du mois -5
MP+25_N Le 25 des Mois pairs
PJOPJO essai p jourdan
T+1LUN Premier lundi du Trimestre
T-56S Du lundi au samedi
T256S Du lundi au samedi
TEST1 TEST
TESTSBO test sylvain
TESTSER test ER
TOTO le dernier jour ouvre sem entiere mois
TOTO2 le dernier jour ouvre sem entiere mois
TV4_J Jours Calendaires
TV4_JO Jours ouvres
W+01O+ le premier jour ouvre de la semaine
W-01O- le dernier jour ouvre de la semaine
**********************************************************
2) J'ai aussi un fichier list_rules3.tmp qui ne contient que les éléments suivants
H+01_N
H+02_N
J+01LS
J+01LV
M+1DIMAN
***************************************************
3) je voudrais créer un fichier rules.txt qui contient ceci
H+01_N tous les lundis
H+02_N tous les mardis
J+01LS Du lundi au samedi
J+01LV Du Lundi au Vendredi
M+1DIMAN Le premier dimanche du mois
***************************************************
4) Alors j'ai tapé le code source suivant dans un fichier extract.ksh
for regle in $(cat list_rules3.tmp)
do
ligne=$(grep $regle list_rules.tmp)
echo $ligne >>rules.txt
done
***************************************************
5) Mais en fait j'obtiens dans rules.txt le résultat suivant
H+01_N tous les lundis
H+02_N tous les mardis
J+01LS Du lundi au samedi
J+01LV Du Lundi au Vendredi J+01LV_N Du Lundi au Vendredi sauf jours feries
M+1DIMAN Le premier dimanche du mois
*****************************************************************************
6) Bilan
En fait ce qui se passe, c'est que lorsqu'il fait le grep dans la boucle, il va sélectionner pour $regle=J+01LV, 2 occurences J+01LV et J+01LV_N parce qu'ils contiennent tous les 2 les caractères J+01LV.
Je ne veux pas sélectionner J+01LV_N parce qu'il n'est pas dans mon fichier list_rules3.tmp
Comment dois je faire pour résoudre ce problème. Puis je utiliser avec grep une option supplémentaire qui prends compte la taille de $regle?
Bien entendu je ne veux pas supprimer manuellement J+01LV_N... il faut que ce soit dynamique : quelquesoit le contenu du fichier list_rules3.tmp
*******************************************************************************
En espérant que j'ai été suffisament claire.
Merci d'avance à tous ceux qui oseront s'aventurer.
:)
********************************************************************
1)voila mon problème j'ai une liste complète (et longue) comme celle ci dans le fichier list_rules.tmp
4S+06NN 1er samedi sur 4 semaines
4S+07NN 1er dimanche sur 4 semaines
4S+13NN 2eme samedi sur 4 semaines
4S+14NN 2eme dimanche sur 4 semaines
4S+20NN 3eme samedi sur 4 semaines
4S+21NN 3eme dimanche sur 4 semaines
4S-01NN 4eme dimanche sur 4 semaines
4S-02NN 4eme samedi sur 4 semaines
A+01AA Le premier jour de l'annee
A+01O+ le premier jour ouvre de l'annee
A+5NN le 5 janvier
A-01O- le dernier jour ouvre de l'annee
A-05_V le 2ieme vendredi ouvre de l'annee
A-08_V le 8ieme jour ouvre de l'annee
A-27N le 5 decembre
CAT le dernier jour ouvre sem entiere mois
CP vendredi ouvre derniere sem entiere mois
CPON
H+01_N tous les lundis
H+01_S tous les 15 jours le lundi
H+02O+ tous les mardis si chome report+
H+02_N tous les mardis
H+03_N tous les mercredis
H+04_N tous les jeudis
H+05_N tous les vendredis
H+06_N tous les samedis
H+07_N tous les dimanches
J+01LJ Du Lundi au Jeudi
J+01LS Du lundi au samedi
J+01LV Du Lundi au Vendredi
J+01LV_N Du Lundi au Vendredi sauf jours feries
J+01MD Du Mardi au Dimanche
J+01MS Du Mardi au Samedi
J+01NN tous les jours chomes ou feries
J+01_N TLJ sauf Dim et jours feries
J+01_N-1 sauf les lundi
J+01_N-5 tous les jours sauf le vendredi
J+01_N-7 sauf les dimanches
J+02LD tous les 2 jours
J+04LV 4 jour du moi (sauf sam, dim) + report
J+1_N-6 tous les jours sauf le samedi
J+LMV tous les Lu Me Ve
JN01ON tous les jours ouvres
JN01_N tous les jours
JOMA-VE Du Mardi au Vendredi Jours ouvres
LOL le 25 du mois
LOL1 1er semaine
LOL2 1er semaine
LOL21 le 25 du mois
LOL22 le 25 du mois
LOL23 le 25 du mois
LOL24 le 25 du mois
LOL30 tous les 2 jours
LOLM tous les jours
LOLMMD 1er jour de l annee
M+01O+ le premier jour ouvre du mois
M+05O+ le 5eme jour du mois report +
M+1DIMAN Le premier dimanche du mois
M+1LUNDI Le premier lundi du mois
M+1MARDI tous les premiers mardis ouvres du mois
M+1SAMED Le premier samedi du mois
M+1VEN premier vendredi moi
M+2DIMAN Le 2eme dimanche du mois
M+2LUNDI Le 2eme Lundi du mois
M+2MERCR tous les deuxiemes mercredis du mois
M+2SAMED Le 2eme samedi du mois
M+2VEN deuxieme vendredi moi
M+3DIMAN Le 3eme dimanche du mois
M+3LUNDI Le 3eme Lundi du mois
M+3SAMED Le 3eme samedi du mois
M+3VEN troisieme vendredi moi
M+4DIMAN Le 4eme dimanche du mois
M+4LUNDI Le 4eme Lundi du mois
M+4SAMED Le 4eme samedi du mois
M+5DIMAN Le 5eme dimanche du mois
M+5LUNDI Le 5eme Lundi du mois
M+L+1DIM Lundi apres 1er Dimanche mois impair
M-01O- le dernier jour ouvre du mois
M-01_N le dernier jour du mois
M-11VEN ven prec le ven prec dernier Lun du mois
M-1DIMAN Le dernier dimanche du mois
M-1SAM Le dernier Samedi du mois
M-1VEN Le dernier vendredi du mois
M-3JVEN Vendredi dans les 3 derniers j du mois
M-4DN- Dimanche preced dernier mercredi mois
M-4VN- Vendredi preced dernier lundi mois
M-7DIM avant dernier dimanche moi
M-7VEN avant dernier vendredi moi
MI+L+1DI lundi qui suit 1er Dimanche mois impairs
MN01_N le 1er du mois
MN02_N le 2 du mois
MN03_N le 3 du mois
MN04_N le 4 du mois
MN05_N le 5 du mois
MN06_N le 6 du mois
MN07_N le 7 du mois
MN08_N le 8 du mois
MN09_N le 9 du mois
MN10_N le 10 du mois
MN11_N le 11 du mois
MN12_N le 12 du mois
MN13_N le 13 du mois
MN14_N le 14 du mois
MN15_N le 15 du mois
MN16_N le 16 du mois
MN17_N le 17 du mois
MN18_N le 18 du mois
MN19_N le 19 du mois
MN20_N le 20 du mois
MN21_N le 21 du mois
MN22_N le 22 du mois
MN23_N le 23 du mois
MN24_N le 24 du mois
MN25_N le 25 du mois
MN26_N le 26 du mois
MN27_N le 27 du mois
MN28_N le 28 du mois
MN29_N le 29 du mois
MN30_N le 30 du mois
MN31_N le 31 du mois
MN_5_N Dernier jour du mois -5
MP+25_N Le 25 des Mois pairs
PJOPJO essai p jourdan
T+1LUN Premier lundi du Trimestre
T-56S Du lundi au samedi
T256S Du lundi au samedi
TEST1 TEST
TESTSBO test sylvain
TESTSER test ER
TOTO le dernier jour ouvre sem entiere mois
TOTO2 le dernier jour ouvre sem entiere mois
TV4_J Jours Calendaires
TV4_JO Jours ouvres
W+01O+ le premier jour ouvre de la semaine
W-01O- le dernier jour ouvre de la semaine
**********************************************************
2) J'ai aussi un fichier list_rules3.tmp qui ne contient que les éléments suivants
H+01_N
H+02_N
J+01LS
J+01LV
M+1DIMAN
***************************************************
3) je voudrais créer un fichier rules.txt qui contient ceci
H+01_N tous les lundis
H+02_N tous les mardis
J+01LS Du lundi au samedi
J+01LV Du Lundi au Vendredi
M+1DIMAN Le premier dimanche du mois
***************************************************
4) Alors j'ai tapé le code source suivant dans un fichier extract.ksh
for regle in $(cat list_rules3.tmp)
do
ligne=$(grep $regle list_rules.tmp)
echo $ligne >>rules.txt
done
***************************************************
5) Mais en fait j'obtiens dans rules.txt le résultat suivant
H+01_N tous les lundis
H+02_N tous les mardis
J+01LS Du lundi au samedi
J+01LV Du Lundi au Vendredi J+01LV_N Du Lundi au Vendredi sauf jours feries
M+1DIMAN Le premier dimanche du mois
*****************************************************************************
6) Bilan
En fait ce qui se passe, c'est que lorsqu'il fait le grep dans la boucle, il va sélectionner pour $regle=J+01LV, 2 occurences J+01LV et J+01LV_N parce qu'ils contiennent tous les 2 les caractères J+01LV.
Je ne veux pas sélectionner J+01LV_N parce qu'il n'est pas dans mon fichier list_rules3.tmp
Comment dois je faire pour résoudre ce problème. Puis je utiliser avec grep une option supplémentaire qui prends compte la taille de $regle?
Bien entendu je ne veux pas supprimer manuellement J+01LV_N... il faut que ce soit dynamique : quelquesoit le contenu du fichier list_rules3.tmp
*******************************************************************************
En espérant que j'ai été suffisament claire.
Merci d'avance à tous ceux qui oseront s'aventurer.
A voir également:
- Recherche dans liste fichier
- Fichier bin - Guide
- Liste déroulante excel - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
12 réponses
Avec "^$regle "
quand j'exécute cette commande, mon fichier rules.txt est vide!
As tu une explication devant ça?
for regle in $(cat list_rules3.tmp)
do
ligne=$(grep "^$regle " list_rules.tmp)
echo $ligne >>rules.txt
done
quand j'exécute cette commande, mon fichier rules.txt est vide!
As tu une explication devant ça?
for regle in $(cat list_rules3.tmp)
do
ligne=$(grep "^$regle " list_rules.tmp)
echo $ligne >>rules.txt
done
Est-ce que dans list_rules.tmp les élémets sont séparés par un blanc ou un tab ?
et manuellement : grep "^J+01LV[ <tab>]" list_rules.tmp
[ <tab>] contient [blanc tab]
et manuellement : grep "^J+01LV[ <tab>]" list_rules.tmp
[ <tab>] contient [blanc tab]
je ne sais pas parce que je n'ai pas accès au code source de "fabrication" du fichier list_rules.tmp
mais en regardant sa structure j'aurais en vie de dire que c'est un tab
mais pourquoi qu'est ce que ca change de savoir ca?
mais en regardant sa structure j'aurais en vie de dire que c'est un tab
mais pourquoi qu'est ce que ca change de savoir ca?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour voir si c'est un blanc ou un tab:
head -3 list_rules.tmp | od -c
si il y a \t c'est tab
rechercher un blanc ou un tab, ce n'est pas le même caractère.
head -3 list_rules.tmp | od -c
si il y a \t c'est tab
rechercher un blanc ou un tab, ce n'est pas le même caractère.
voila ce que j'obtiens
je suppose alors que ce sont des espaces puisque je vois \n
0000000 4 S + 0 6 N N 1 e r s a
0000020 m e d i s u r 4 s e m a i
0000040 n e s
0000060 \n 4 S + 0 7 N N 1 e r
0000100 d i m a n c h e s u r 4
0000120 s e m a i n e s
0000140 \n 4 S + 1 3 N N
0000160 2 e m e s a m e d i s u r
0000200 4 s e m a i n e s
0000220 \n
0000231
je suppose alors que ce sont des espaces puisque je vois \n
0000000 4 S + 0 6 N N 1 e r s a
0000020 m e d i s u r 4 s e m a i
0000040 n e s
0000060 \n 4 S + 0 7 N N 1 e r
0000100 d i m a n c h e s u r 4
0000120 s e m a i n e s
0000140 \n 4 S + 1 3 N N
0000160 2 e m e s a m e d i s u r
0000200 4 s e m a i n e s
0000220 \n
0000231
bizare, il devrait y avoir un blanc ou \t entre N et 1
0000000 4 S + 0 6 N N 1 e r s a
ca veut dire qu'il n'y a pas de séparateur. \n c'est la fin de ligne.
et en faisant head -4 list_rules.tmp ?
0000000 4 S + 0 6 N N 1 e r s a
ca veut dire qu'il n'y a pas de séparateur. \n c'est la fin de ligne.
et en faisant head -4 list_rules.tmp ?
voici ce que j'obtiens... tu en conclu quoi?
4S+06NN 1er samedi sur 4 semaines
4S+07NN 1er dimanche sur 4 semaines
4S+13NN 2eme samedi sur 4 semaines
4S+14NN 2eme dimanche sur 4 semaines
4S+06NN 1er samedi sur 4 semaines
4S+07NN 1er dimanche sur 4 semaines
4S+13NN 2eme samedi sur 4 semaines
4S+14NN 2eme dimanche sur 4 semaines
Le résultat du od -c est étrange.bon que répond
grep "^J+01LV[ <tab>]" list_rules.tmp
[ <tab>] contient [blanc tab] tab == touche tab
et sans "
grep ^J+01LV[ <tab>] list_rules.tmp
grep "^J+01LV[ <tab>]" list_rules.tmp
[ <tab>] contient [blanc tab] tab == touche tab
et sans "
grep ^J+01LV[ <tab>] list_rules.tmp