Bonjour à tous
Je possède une fichier texte contenant plusieurs mots (pour l'exemple, simplement des lettres)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#fichier_test.txt a b c d e f g h i j k l m
Je cherche a faire des traitement (pour l'exemple, un simple affichage) selon les motifs trouvés.
A savoir qu'il faut absolument une combinaison de motifs (l'ordre et la case n'ont pas d'importance) d'ou l'utilisation de awk qui permet d'utiliser l'opérateur ET
Pour l'exemple, je n'en ait mis que deux, mais je dois en avoir plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #!/bin/bash FichierDeTest="fichier_test.txt" # Je chercher le motif 1 ET le motif 2 TestPresence_a_b=$(awk '/a/ && /b/' fichier_test.txt) #Si la variable n'est pas vide (== résultat de awk), la chaine est trouvé if [ -n "$TestPresence_a_b" ] ; then echo "La chaine a b est présente" fi # Je chercher le motif 1 ET le motif 2 ET le motif 3 TestPresence_c_e_f=$(awk '/c/ && /e/ && /f/' fichier_test.txt) #Si la variable n'est pas vide (== résultat de awk), la chaine est trouvé if [ -n "$TestPresence_c_e_f" ] ; then echo "La chaine c e f est présente" fi # etendre à d'autres cas, exemple #g h i #l m
Seulement, mon code se répéte déjàdonc je cherche à faire quelque chose de plus générique. Je me demande si je peut créer une struture qui ressemble au Case If
Merci d'avance de vos suggestions.
Ajout de précisions
J'apporte quelques précisions à ma demande
- je recherche bien des motifs qui sont des mots-clés
- je dois avoir une 50 aine de cas à traiter, qui peuvent avoir certains mots en commun (et non pas la totalité), par exemple a b ; a d e ; c e f; ...
Je dois donc chercher entre 2 et 4 mots-clés pour chaque cas.
- quand je trouve une combinaison de mots-clés, je doit renvoyer une sorte de définition donc du texte. On peut considérer que c'est une sorte de dictionnaire avec, en entrée, des mots-clés dont l'ordre importe peu.
- j'ai d'abord testé par grep avec le | mais le comportement était un OR et pas un AND. Peut-être me suis-je trompé dans la syntaxe ?
Partager