TP4 – Chasse au trésor
Pour faire les exercices, vous avez besoin de connaître le langage bash. Vous pouvez vous référer à l'annexe shell. Vous pouvez aussi trouver une liste d'astuces ici. Tous les exercices sont obligatoires, sauf les exercices notés « défi » ou « optionnel » qui sont optionnels. En particulier, les exercices notés « hors présentiel » sont supposés fait d'une séance sur la suivante.
Voici l'ultime trace du trésor confié à Bilbon lors de l'un de ses longs voyages itinérants de la fin du XXè siècle.
« Face à la clé du trésor cachée dans les itinéraires signés de mes nombreux voyages à travers de vastes pays de la fin du siècle dernier, l'anagramme des premières lettres des trois premières lignes selon l'ordre alphabétique portant le mot "à" en garantira l'authenticité. La clé ainsi découverte, il vous faudra la réorganiser selon un ordre lexicographique de troisième champ afin d'en extraire les 3è mots des couples de lignes de tête et de queue de lignes, et ainsi découvrir le chemin jusqu'au trésor ! »
Mise en place de la chasse au trésor (∼5mn)
Identification du voyage (∼1h10)
La clé du trésor est cachée au sein d'un des répertoires de l'archive extraite. Chacun des répertoires correspond à un voyage, dont chacun des noms a été construit sur le même modèle : <année>-<lieu>, associé aux date et destination du voyage entrepris. Le champ année est toujours constitué de quatre chiffres. Quant au champ lieu, il correspond soit à un pays, et dans ce cas il commence par une majuscule, soit à une ville et il commence par une minuscule. Les deux champs sont séparés soit par un tiret haut, soit par un tiret bas.
La clé du trésor ayant été cachée lors d'un voyage itinérant à la fin du siècle dernier, nous sommes à la recherche d'un répertoire dont la date de création est comprise entre 1970 et 1999, et dont le lieu référence un pays. Par exemple, 1986-Bolivie.
Afin de mener à bien la recherche de la clé du trésor, nous vous proposons de procéder de manière incrémentale. Pour cela, vous allez écrire un script nommé chasse.sh que vous modifierez à chaque étape.
- tous les fichiers dont le nom commence par 19 se trouvant dans le répertoire $base,
- tous les fichiers dont le nom commence par 19 et est suivi par un chiffre entre 7 et 9,
- tous les fichiers dont le nom commence par 19, est suivi par un chiffre entre 7 et 9, et est suivi d'un chiffre quelconque,
- tous les fichiers dont le nom commence par 19, est suivi par un chiffre entre 7 et 9, est suivi d'un chiffre quelconque, et est suivi soit par un tiret bas soit par un tiret haut.
- tous les fichiers dont le nom commence par 19, est suivi par un chiffre entre 7 et 9, est suivi d'un chiffre quelconque, est suivi soit par un tiret bas soit par un tiret haut, et est suivi d'une chaîne de caractères quelconque dont la première lettre est une majuscule.
Identification de la clé du trésor (∼30mn)
- affichez, avec la commande grep, toutes les lignes contenant le caractère « à » dans le fichier,
- triez, avec la commande sort, ces lignes en suivant l'ordre lexicographique,
- ne gardez que les trois premières lignes du fichier avec la commande head,
- ne gardez que la première lettre de chaque ligne avec la commande cut,
- supprimez les retours à la ligne avec la commande tr (caractère « \n »);
Ultime étape : la découverte du trésor ! (∼45mn)
Nous vous rappelons que la fin de l'énigme est : « La clé ainsi découverte, il vous faudra la réorganiser selon un ordre lexicographique de troisième champ afin d'en extraire les 3è mots des couples de lignes de tête et de queue de lignes, et ainsi découvrir le chemin jusqu'au trésor ! »
- Eliminez les lignes vides : Pour ce faire, filtrez le résultat de la commande précédente de façon à ne conserver que les lignes qui contiennent du texte (sachez que le motif . de grep, permet de capturer n'importe quel caractère).
- Sauvegardez ce résultat dans un fichier nommé Itineraire_trie.txt.
- Isolez les deux premières lignes du fichier Itineraire_trie.txt et sauvegardez-les dans un fichier nommé Itineraire_trie_compact.txt.
- Isolez les deux dernières lignes du fichier Itineraire_trie.txt et ajoutez-les au fichier nommé Itineraire_trie_compact.txt.
- Stockez dans une variable nommée mots les troisièmes mots de chacune des lignes de Itineraire_trie_compact.txt.
- Supprimez les fichiers Itineraire_trie.txt et Itineraire_trie_compact.txt.
- Enfin, affichez le contenu de la variable mots.