Licence Sciences du Vivant Cursus bidisciplinaire Biologie...
Transcript of Licence Sciences du Vivant Cursus bidisciplinaire Biologie...
Licence L1 Jour 3 – Le Corguillé 1 / 4022-09-2011
Licence Sciences du Vivant
Cursus bidisciplinaire
Biologie-Mathématiques
Licence L1 Jour 3 – Le Corguillé 2 / 4022-09-2011
Système UnixAvancé
v 1.04
Licence L1 Jour 3 – Le Corguillé 3 / 4022-09-2011
Plan
● Rappel
● Introduction● Décrire● Manipuler● Chercher● Redirection● Recherche avancée
Licence L1 Jour 3 – Le Corguillé 4 / 4022-09-2011
Rappel Kit de survie
● ls : lister le contenu d'un dossier● cd : changer de répertoire● pwd : où suis-je ?
● cat : afficher le contenu d'un fichier texte● less : consulter le contenu d'un fichier texte long● head / tail : afficher le début ou la fin d'un fichier texte● gedit : éditer un fichier texte● evince : afficher un fichier pdf
● file : connaitre le type de fichier (texte, binaire, pdf ...)
Licence L1 Jour 3 – Le Corguillé 5 / 4022-09-2011
Rappel Kit de survie
● mkdir : créer un dossier● rmdir : effacer un dossier vide● rm : effacer un fichier● rm -r : effacer un dossier et ces fichiers
● cp : copier/coller● mv : couper/coller
Licence L1 Jour 3 – Le Corguillé 6 / 4022-09-2011
Rappel Kit de survie
● cmd & : lancer une commande en mode background
● cmd : mettre une commande en mode background[ctrl]+[z]
bg
Licence L1 Jour 3 – Le Corguillé 7 / 4022-09-2011
Introduction
● Le but ici sera d'acquérir les commandes avancées pour la manipulation de fichiers
● Certains analyses bio informatiques/statistiques peuvent :● nécessiter des centaines de fichiers d'entrée● nécessiter des fichiers d'entrée volumineux : ko, mo, go● produire des centaines de fichiers de sortie● produire des fichiers de sortie volumineux : ko, mo, go
Licence L1 Jour 3 – Le Corguillé 8 / 4022-09-2011
Introduction
● Certains fichiers trop volumineux ne peuvent souvent pas être ouverts dans un éditeur de texte classique.
(pas assez de RAM disponible)
● Donc certains opérations simples se compliquent : – compter le nombre de fois où apparaît un caractère– substituer toutes les occurrences d'un mot par un autre– trier un tableau / extraire certaines colonnes d'un tableau– …
Licence L1 Jour 3 – Le Corguillé 9 / 4022-09-2011
● Autre problème : manuellementOn peut effectuer 1 opération sur 1 fichierMais on ne peut pas effectuer 1000 opérations sur 1 fichier...Et 1000 x 1000 = ....
Licence L1 Jour 3 – Le Corguillé 10 / 4022-09-2011
Récupérer les données sur Internet
● Récupération du jeu de données sur Internet
● Ouvrir les pdf des cours : evince
$ wget http://application.sb-roscoff.fr/download/fr2424/enseignement/lbm/ue-informatique/Jour3-dataset.zip$ unzip Jour3-dataset.zip$ ls Jour3
acteur.csv acteur.tab adress.csv annuaire.csv insulin.fas Jour2-Systeme-Unix-Base.pdf Jour3-Systeme-Unix-Avance.pdf patelles_roscoff.csv phone_number.csv pop_ville.tab
$ evince *.pdf
Licence L1 Jour 3 – Le Corguillé 11 / 4022-09-2011
Décrire
● Obtenir les statistiques d'un fichier● Nombre de lignes : wc -l
● Nombre de mots : wc -w
● Nombre de caractères : wc -m
$ wc -l adress.csv6 adress.csv
$ wc -w adress.csv76 adress.csv
$ wc -m adress.csv488 adress.csv
Licence L1 Jour 2 – Le Corguillé 12 / 4016-09-2010
Décrire
● Recherche de lignes contenant un mot dans un fichier : grep
● Comptage de lignes contenant un mot dans un fichier
$ grep ">" insulin.fas>gi|163659904|ref|NM_000618.3| Homo sapiens insulin-like grow>gi|163659900|ref|NM_001111284.1| Homo sapiens insulin-like g
$ grep ">" -c insulin.fas5
Licence L1 Jour 3 – Le Corguillé 13 / 4022-09-2011
Manipuler Tableaux
● Récupérer des colonnes dans un fichier : cut
Chuck Norris 70Sylvester Stallone 64Steven Seagal 59
$ cut -f 1 acteur.tab # récupération de la colonne 1ChuckSylvesterSteven
$ cut -f "2,3" acteur.tab # récupération des colonnes 2,3Norris 70Stallone 64Seagal 59
L'age des acteurs
Licence L1 Jour 3 – Le Corguillé 14 / 4022-09-2011
Manipulation Tableaux
● Trier un fichier tabulé : sort
Roscoff 3705Paris 4193031Tokyo 13010279 Population des villes
$ sort –-key 1 pop_ville.tab # classement par la colonne 1Paris 4193031Roscoff 3705Tokyo 13010279
$ sort –-key 2 pop_ville.tab # classement par la colonne 2Tokyo 13010279Roscoff 3705Paris 4193031
$ sort –-key 2 -n pop_ville.tab # classement numériqueRoscoff 3705Paris 4193031Tokyo 13010279
Licence L1 Jour 3 – Le Corguillé 15 / 4022-09-2011
Redirection Les flux
stdin
inputentrée
Programme
stdout
outputsortie
stderr
outputsortie erreur
0
2
1
Licence L1 Jour 3 – Le Corguillé 16 / 4022-09-2011
Redirection Les flux
● Rediriger un flux consiste à écrire dans un fichier le résultat d'une commande plutôt que sur l'écran
● Certains programmes proposent dans leurs options d'indiquer le fichier de sortie
● Mais pour d'autre ça n'est pas la cas
$ blastn -query insulin.fas -db ntBLASTN 2.2.23+Reference: Stephen F. Altschul, Thomas L. Madden, Alejandro A....
$ blastn -query insulin.fas -db nt -out insulin_vs_nt.blast
$ ls$ cut$ sort
Licence L1 Jour 3 – Le Corguillé 17 / 4022-09-2011
Redirection Sorties
● Les sorties sont par défaut affichées sur l'écran=> donc le but est de rediriger ce flux d'information dans des fichiers
stdin
inputentrée
Programme
stdout
outputsortie
stderr
outputsortie erreur
0
2
1
Licence L1 Jour 3 – Le Corguillé 18 / 4022-09-2011
Redirection Sorties
● Sortie écran
● Redirection vers des fichiers
● Redirection de tout les flux
$ ls acteur.csv # sortie standard stdout 1acteur.csv
$ ls acteur # sortie d'erreur standard stderr 2ls: impossible d'accéder à acteur: Aucun fichier ou dossier de
$ ls acteur.csv acteur > ls.out # redirection de stdout 1ls: impossible d'accéder à acteur: Aucun fichier ou dossier de
$ ls acteur.csv acteur 2> ls.out # redirection de stderr 2acteur.csv
$ ls acteur.csv acteur 2> ls.err 1> ls.out # 2 fichiers
$ ls acteur.csv acteur >& ls.out # 1 fichier
Licence L1 Jour 3 – Le Corguillé 19 / 4022-09-2011
Redirection Sorties
● Exemples
$ cat acteur.tabChuck Norris 70Sylvester Stallone 64Steven Seagal 59
$ cat acteur.tab pop_ville.tabChuck Norris 70Sylvester Stallone 64Steven Seagal 59Roscoff 3705Paris 4193031Tokyo 13010279
$ cat acteur.tab pop_ville.tab > gros_tableau.tab$ ls >> gros_tableau.tab # en mode append : c'est à dire
# qu'il n'écrase pas le fichier# mais met au bout de celui-ci
Licence L1 Jour 3 – Le Corguillé 20 / 4022-09-2011
Redirection Entrée
● L'entrée est par défaut l'entrée clavier => donc le but est de rediriger un fichier vers le programme
stdin
inputentrée
Programme
stdout
outputsortie
stderr
outputsortie erreur
0
2
1
Licence L1 Jour 3 – Le Corguillé 21 / 4022-09-2011
Redirection Entrée
● Entrée clavier
● Entrée par fichier en argument
● Entrée par fichier par redirection
● Cette redirection est moins utilisé que les redirections de sorties
$ wc -lligne 1ligne 2ligne 3[Ctrl]+[D]
3
$ wc -l annuaire.csv311 annuaire.csv
$ wc -l < annuaire.csv311
Licence L1 Jour 3 – Le Corguillé 22 / 4022-09-2011
Redirection Lancement séquentiel
● Lancer plusieurs commande en 1 fois : ;
● Avec condition de réussite : &&
$ date; lsWed Sep 22 16:11:39 CEST 2010adress.csv cours Images projets Téléchargement
$ ls acteur; head acteur # sans condition de réussitels: acteur: No such file or directoryhead: cannot open `acteur' for reading: No such file or direc
$ ls acteur && head acteur # avec condition de réussitels: acteur: No such file or directory
$ ls acteur.tab && cat acteur.tabacteur.tabChuck Norris 70Sylvester Stallone 64
Licence L1 Jour 3 – Le Corguillé 23 / 4022-09-2011
Redirection pipe
● Tuyau ou pipeline : pipe : |
stdin programme 1 programme 2
stdout
stderr
0 1 01
2
programme 1 programme 2 programme ... programme n
Licence L1 Jour 3 – Le Corguillé 24 / 4022-09-2011
Redirection pipe
● Exemple 1
● Exemple 2
$ ls | wc -l # une manière de compter le nombre de fichier35
$ ls > fichier.txt ; wc -l fichier.txt; rm fichier.txt# version longue
$ ps -edf # rapide pour la consultation$ ps -edf | less # lecture par page
$ ps -edf | grep "lecorguille" # filtrage en directe
$ date; ls | wc -l$ (date; ls) | wc -l
Licence L1 Jour 3 – Le Corguillé 25 / 4022-09-2011
Redirection pipe
● Exemple 3 : création d'un fichier intermédiaire : tee$ ps -edf | tee ps.txt | grep "lecorguille" > ps_moi.txt$ ps -edf > ps.txt # version longue$ grep "lecorguille" ps.txt > ps_moi.txt # en 2 étapes
programme 1 programme 2
stderr
1
2
tee1 0 1 0
argument
Licence L1 Jour 3 – Le Corguillé 26 / 4022-09-2011
Exercices
● Exercice 1 : acteur.csv● Récupérer les noms des acteurs
● Exercice 2 : acteur.csv● Classer en ordre décroissant les ages des acteurs
acteur.tabChuck Norris 70Sylvester Stallone 64Steven Seagal 59
acteur.csvChuck;Norris;70Sylvester;Stallone;64Steven;Seagal;59
Licence L1 Jour 3 – Le Corguillé 27 / 4022-09-2011
Exercices Solutions
● Exercice 1
● Exercice 2
$ cut -d ";" -f 2 acteur.csv# -d : séparateur de champs : ;# -f : champs souhaités : 2
$ cut –-delimiter=";" --fields=2 acteur.csv # version plus jolie
$ sort -t ";" -k 3 acteur.csv# -t : séparateur de champs : ;# -k : colonne visée : 3
$ sort -–field-separator=";" –-key=3 acteur.csv
Licence L1 Jour 3 – Le Corguillé 28 / 4022-09-2011
Exercices
● Exercice 3 : annuaire.csv● Trié par le nom d'équipe (colonne 6)● Récupérer les colonnes nom (1), prenom (2), unité (5) et équipe
(6)● Ne garder que les personnes de l'unité umr7144 (5)● Et mettre le tout dans un fichier nommé annuaire_umr7144.csv
● EN UNE LIGNE DE COMMANDE
NOM PRENOM EMAIL TELEPHONE UNITE EQUIPE
Le Corguille Gildas gildas.lecorguille{AT}sb-roscoff.fr 02 98 29 23 81 fr2424 service informatique et genomiqueCorre Erwan erwan.corre{AT}sb-roscoff.fr 02 98 29 23 81 fr2424 service informatique et genomique
Licence L1 Jour 3 – Le Corguillé 29 / 4022-09-2011
Exercices Solutions
● Exercice 3$ grep "umr7144" annuaire.csv | sort -k 6 -t ";" | cut -f "1,2,5,6" -d ";" > annuaire_umr7144.csv $ grep "umr7144" annuaire.csv | cut -f "1,2,5,6" -d ";" | sort -k 4 -t ";" > annuaire_umr7144.csv$ cut -f "1,2,5,6" -d ";" annuaire.csv | grep "umr7144" | sort -k 4 -t ";" > annuaire_umr7144.csv$ grep "umr7144" annuaire.csv | sort --key=6 –field-separator=";"| cut --fields="1,2,5,6" --delimiter=";" > annuaire_umr7144.csv$ ...
Licence L1 Jour 2 – Le Corguillé 30 / 4016-09-2010
Expression régulière Définition
« Les expressions régulières (ou regexp) est une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de chaînes de caractères possibles selon une syntaxe précise. »
● Exemples en langage naturel : – chaine_de_caractere@chaine_de_caractere.chaine_de_charactere– 2xchiffre 2xchiffre 2xchiffre 2xchiffre 2xchiffre
Licence L1 Jour 2 – Le Corguillé 31 / 4016-09-2010
Expression régulière Les classes
[0-9] Chiffre décimal[a-z] Lettre minuscule[A-Z] Lettre majuscule[a-zA-Z] Caractère alphabétique[0-9a-zA-Z] Caractère alphanumérique[ \t] Espace blanc ou tabulation. N'importe quel caractère : joker[^ATGC] Tout sauf les lettres A,T,C et G
● Exemples en construction– [0-9a-zA-Z]@[0-9a-zA-Z].[a-zA-Z]– [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]
Licence L1 Jour 2 – Le Corguillé 32 / 4016-09-2010
Expression régulière Les répétitions
? répéter 0 ou 1 fois+ répéter de 1 à n fois* répéter de 0 à n fois{2} répéter 2 fois{2,5} répéter de 2 à 5 fois{2,} répéter de 2 à n fois
● Exemples en construction– [0-9a-zA-Z]+@[0-9a-zA-Z]+.[a-zA-Z]{2,3}– [0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2}
Licence L1 Jour 2 – Le Corguillé 33 / 4016-09-2010
Expression régulière Autres caractères spéciaux
● ^ indique un début de ligne● $ indique une fin de ligne● \t tabulation● \n saut de ligne sous linux et mac● \r\n saut de ligne sous windows● \ caractère spécial car participe aux caractères spéciaux
caractère d'échappement pour les caractères spéciaux
● Exemples : ● USA$ désigne une expression qui se termine par USA● USA\$ désigne une expression qui contient USA$● \\t\t\\t désigne un truc comme ça : « \t \t »
Licence L1 Jour 2 – Le Corguillé 34 / 4016-09-2010
Exemples
● Exemples complets– [0-9a-zA-Z\._\-]+@[0-9a-zA-Z]+\.[a-zA-Z]{2,3}
● En vrai
– egrep accepte des expressions régulières plus complexe que grep
$ egrep --color "[0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2}" annuaire.csv
Gaillard;Fanny;fanny.gaillard{AT}sb-roscoff.fr;02 98 29 23 89;fr2424;service iHoubin;Celine;celine.houbin{AT}sb-roscoff.fr;02 98 29 25 31;fr2424;service merSimon;Nathalie;nathalie.simon{AT}sb-roscoff.fr;02 98 29 25 34;umr7144;Diversit
Licence L1 Jour 2 – Le Corguillé 35 / 4016-09-2010
Exercices
● Exercice 1
● Trouver toutes les patelles à la coque percée
● Exercice 2● Trouver toutes les personnes dont le nom est Thomas dans
annuaire.csv● Exercice 3
● Trouver toutes les personnes dont le prénom est Thomas dans annuaire.csv
$ grep "1" --color patelles_roscoff.csv35,6 18,6 036,7 13,1 038,7 15,1 037,4 16,4 048,8 19,8 043,9 17,1 1
Licence L1 Jour 2 – Le Corguillé 36 / 4016-09-2010
Exercices Solutions
● Exercice 1
● Exercice 2
● Exercice 3
$ grep "1$" --color patelles_roscoff.csv # fini pas un 143,9 17,1 142,8 15,8 147,4 22,6 121 7,1 1
$ grep "^Thomas" --color annuaire.csv # commence par Thomas
$ grep ".Thomas" --color annuaire.csv # il faut au moins 1 caractère avant# Thomas
Licence L1 Jour 2 – Le Corguillé 37 / 4016-09-2010
Licence L1 Jour 2 – Le Corguillé 38 / 4016-09-2010
Les Bonus
Licence L1 Jour 3 – Le Corguillé 39 / 4022-09-2011
Décrire Substituer
● tr● sed
Licence L1 Jour 3 – Le Corguillé 40 / 4022-09-2011
Chercher
● find● find -exec