TP Syst`eme d`exploitation numéro 5

Transcription

TP Syst`eme d`exploitation numéro 5
TP Système d’exploitation numéro 5
cycle ingénieur - 1ère année
Année 2012-2013
Exercice 1 (awk)
Les sous-titres de certains formats vidéo peuvent être stockés dans un fichier texte
séparé, au format srt. Un sous titre aura le format suivant :
numéro du sous-titre
temps de départ --> temps de fin
texte du sous titre (éventuellement sur plusieurs lignes)
éventuellement une ou plusieurs lignes vides
Les temps de départ et de fin permettent de préciser le moment où le sous-titre doit
apparaı̂tre et celui où il doit être effacé. Ces temps sont donnés selon le format suivant
HH:MM:SS,mmm où HH représente une heure, MM représente une minute, SS une seconde
et mmm une milliseconde.
L’exemple ci-dessous illustre ces formats, avec les deux sous-titres figurant au début
d’un fichier de type srt :
1
00:00:00,083 --> 00:00:03,206
T’as bossé l’exam de système ce week-end ?
2
00:00:03,331 --> 00:00:07,129
Tu rigoles ...
J’ai fait la teuf jusqu’à ce matin !!!
L’objectif de cet exercice est d’écrire un programme awk, nommé decale.awk, permettant de corriger un éventuel décalage entre la vidéo et les sous-titres, en modifiant les
temps de départ et de fin. Les différentes questions posées dans cet exercice vont permettre
d’écrire ce progamme petit à petit. On précise que pour utiliser awk, il n’est pas nécessaire
1
que toutes les lignes d’un fichier de données possèdent le même nombre de ≪ colonnes ≫,
awk recalculant le nombre de colonnes de chaque ligne traitée ...
Dans ce qui suit, vous pourrez tester vos différentes versions de programme awk à l’aide
du fichier de sous-titres soustitres.srt qui est fourni avec ce sujet.
Question 1
Écrire un programme awk qui permet d’afficher à l’écran uniquement les lignes comportant les durées d’affichage du sous-titre.
Question 2
Modifiez votre programme de telle manière qu’une durée de 1 seconde soit ajoutée
aux temps de départ et de fin, et que la ligne des durées d’affichage modifiées soit affichée.
On précise les points suivants :
– Vous ne traiterez pas ici le cas où la durée des secondes dépasse 60 ;
– vous pourrez utiliser la fonction substr de awk pour accèder aux informations voulues
dans le format de durée. On rappelle ci-dessous le prototype de cette fonction :
substr(T,D,N) : retourne une chaı̂ne composée de N caractères de T à partir de
l’indice D ≥ 1.
À titre d’exemple, voici l’affichage obtenu après exécution du programme sur le fichier
de sous-titres donné en début d’exercice :
00:00:01,083 --> 00:00:04,206
00:00:04,331 --> 00:00:08,129
Question 3
Modifiez votre programme de telle sorte qu’il génère un temps correct si les secondes
dépassent la valeur 60 ou que, par suite, les minutes dépassent également 60.
Question 4
Complétez votre programme afin que les lignes qui ne sont pas des durées d’affichage
soient affichées sans être modifiées. En déduire la ligne de commandes qui permet de générer
une version corrigée des sous titres dans un fichier nommé soustitrescorriges.srt.
Exercice 2 (bash)
L’objectif de cet exercice est d’écrire un script bash permettant de renommer une série de
fichiers de nom quelconque sous un nom commun, suivi d’un numéro unique. Par exemple,
2
si l’on dispose dans un dossier des fichiers toto.txt, bizarre.doc et essai.c, l’exécution
du script sur ces fichiers avec, pour nom commun new, devra donner le renommage suivant :
new01, new02 et new03.
Remarque : pour toutes les questions qui suivent, vous n’effectuerez pas réellement le
renommage, mais vous afficherez le couple (ancien nom, nouveau nom), ceci afin d’éviter
d’effacer involontairement des fichiers ...
Question 1
Écrire un script bash qui permette de renommer tous les fichiers passés en paramètre
avec le nom new suivi d’un numéro d’ordre. Le script devra vérifier que chaque fichier à
renommer est bien un fichier standard. Dans le cas contraire, le renommage pour ce fichier
ne doit pas avoir lieu.
À titre d’exemple, si 15 fichiers doivent être renommés, les nouveaux noms seront :
new1, new2, . . .,new9, new10, . . ., new15.
Question 2
Modifiez votre script de telle manière que le numéro du fichier renommé tienne sur
deux chiffres. Par exemple, si 15 fichiers doivent être renommés, les nouveaux noms seront :
new01, new02, . . .,new09, new10, . . ., new15.
Question 3
Modifiez votre script de telle sorte que :
– le nom choisi pour le renommage soit passé sur la ligne de commande comme premier
paramètre ;
– un message d’erreur soit affiché si un nombre insuffisant de paramètres est passé sur
la ligne de commandes (il faut au moins le nouveau nom et un nom de fichier à
renommer).
3