Vous êtes sur la page 1sur 2

I3FM ESIEE Engineering

Systmes et scripts

TP 2 : Manipulation de chaines et de chiers


1 Remarque gnrale
L'ensemble des manipulations doivent tre ralises dans le shell (sans passer par l'interface graphique). Ds que possible, pensez utiliser les facilits oertes par le shell (historique, auto-compltion, caractres jokers). Pensez utiliser le manuel (man) pour connaitre toutes les options d'une commande. Pour eectuer vos tests, rcuprez les chiers germinal.txt, germinalSansAccent.txt et pascal_pensees.txt sur ma page web. Les exercices sont classs par importance/dicult. Tous les exercices marqus d'une seule toile (*) doivent tre fait et maitris.

Option de grep *

Grep (pour g/re/p (global / regular expression / print), commande de l'diteur de texte ed ) est une des commandes les plus utiles qui permet de chercher directement dans le contenu des chiers. Cet exercice a pour but de vous faire dcouvrir les principales options. 1. Quelles sont les options (4 en tout) de grep qui permettent d'obtenir des lignes de contexte (qui prcdent et/ou suivent la ligne o gure l'expression cherche) ? Vriez en cherchant le mot Belgique dans germinal.txt. 2. Comment faire apparatre le numro de la ligne o gure le mot recherch ? Mme vrication que prcdemment. 3. Que se passe-t-il quand on demande galement des lignes de contexte ? Mme vrication que prcdemment. 4. Comment faire pour acher le nombre d'occurrences du mot recherch ? Mme vrication que prcdemment. 5. Comment faire pour que grep ignore la casse des caractres (dirence entre majuscules et minuscules) dans sa recherche ? Combien de fois les mots le ou Le apparaissent-ils dans les deux textes ? 6. Comment faire pour faire apparatre non pas les lignes o gurent le mot, mais les noms des chiers ? Le mot infini apparait-il dans les deux chiers ? Et le mot viande ? 7. Comment faire apparatre les lignes o ne gurent pas le mot recherch ? Existe-t-il des lignes qui ne contiennent pas la voyelle e dans germinal.txt ? 8. Comment faire apparatre les noms des chiers ne contenant pas le mot recherch ? Lequel des deux textes ne contient pas le mot rflchir 9. Comment faire pour que grep ne recherche que les lignes o gure le mot complet (seulement des caractres d'espacement permis gauche ou droite du mot cherch) ? Combien d'occurrence du mot chose au singulier trouve-t-on dans germinal.txt ? 10. Que permet de faire l'option -f ? Servez vous en pour trouver les lignes de germinal.txt contennant le mot chien ou le mot chat..

3
1. 2. 3. 4. 5. 6.

Expressions rgulires *
Toutes les lignes contenant au moins un chire. Toutes les lignes terminant par une majuscule Toutes les lignes commenant par B, E ou Q Tous les mots contenant un r prcd de n'importe quelle lettre majuscule ou minuscule ? Toutes les lignes contenant au moins deux fois le mot homme. ** Tous les mots parmi : mange, mangea, mangeais, mangeait, mangeaient (commenant par une majuscule ou une minuscule).

Trouvez les expressions rgulires qui correspondent la question et tester les avec grep sur le chier
germinal.txt

Filtrage *

Le but de cet exercice est de vous faire dcouvrir d'autres utilitaires de Linux et de vous entrainer les combiner. Commencez par rappeler le rle des commandes suivantes : ps, split, wc, sort, tr, cut, cat, tac, merge, di, rev. 1. Triez les lignes du chiers germinal.txt. 2. Assemblez et triez les chiers germinal.txt et pascal_pensees.txt. 3. Cherchez tous les chiers .txt dans le rpertoire contenant les rpertoires personnels des tudiants de votre lire. Enregistrez le rsultat dans le chier catalog.txt et redirig le rsultat vers le chier spcial /dev/null. A quoi correspond ce chier ? 4. Transformez toutes les lettres minuscules du chier pascal_pensees.txt en lettres majuscules et enregistrez le rsultat dans le chier PASCAL_PENSEES.txt. 5. Supprimez tous les espaces du chier PASCAL_PENSEES.txt et enregistrez le rsultat dans le chier 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
PASCALPENSEES.txt Dcoupez le chier germinal.txt en bloc de 100ko.

R-assemblez les blocs crs au point prcdant dans un chier germinal2.txt. Vriez que toutes lignes de germinal et germinal2 sont bien gales. Achez le chier germinal en inversant l'ordre des lignes et en inversant dans chaque ligne l'ordre des caractres. Enregistrez les lignes 45 50 du chier germinal.txt dans le chier ger45-50.txt. (commandes head et tail) Trouvez tous les processus en cours d'excution appartenant root. Trouvez une commande permettant de n'acher que les champs contenant le login et le rpertoire personnel du chier /etc/passwd (qui contient la liste des utilisateurs du systme). (aide : commande cut) Extraire les nom de login et UID de /set/passwd puis triez les lignes suivant les UID, le tout en une seule commande, vous redirigerez le tout vers le chiers utilisateurs. Compltez la commande prcdente pour remplacer les " :" par des " " (espaces). Achez la liste des processus actifs de manire ce que les colonnes soient spares par un caractre " :" Triez la liste des processus actif par nom de commande puis si deux commandes portent le mme nom par numro de PID. ** Achez tous les mots dirents contenus dans le chier avec le nombre d'occurrences de chacun germinalSansAccent.txt (aide, le caractre "\012" correspond un saut de ligne, commandes : cat, sort, tr, uniq) ** (En utilisant la question prcdente) Achez les 10 mots les plus utiliss du texte germinal.txt. ** Crez un chier liste contenant la liste de tous vos chiers normaux (dont la description dtaille commence par un tiret -) avec leur taille (commandes : cut, grep, ls et tr). 2