Environnement Unix
View the Project on GitHub DU-Bii/module-1-Environnement-Unix
find
grep
, cut
, head
, sort
, uniq
, wc
)|
La commande find
permet de rechercher des fichiers de manière récursive dans
un chemin à partir d’un motif.
Un motif est ici une expression ou une chaine de caractères correspondant au nom ou une partie du nom du fichier recherché
Syntaxe : find [chemin] -name <MOTIF>
Question 1 : Aller dans le répertoire study-cases
(situé dans le
répertoire ~/dubii
) et rechercher tous les
fichiers au format bed (i.e. dont l’extension est .bed
)
Solution ::
$ find . -name "*.bed" ./Escherichia_coli/bacterial-regulons_myers_2013/data/ChIP-seq/FNR1_vs_input1_cutadapt_bowtie2_macs2.bed ./Escherichia_coli/bacterial-regulons_myers_2013/data/ChIP-seq/FNR1_vs_input1_cutadapt_bowtie2_homer.bed
La commande grep
permet de rechercher et afficher les lignes contenant un
motif donné en argument dans un ou des fichiers donnés en argument.
Un motif est ici une expression ou une chaine de caractères correspondant à l’élément recherché (un nom de gène, de protéine,…etc).
Syntaxe : grep [options] <MOTIF> <FICHIERS>
La commande grep a beaucoup d’options très utiles, par exemple :
-i
: ignore les distinctions de casse dans le motif-v
: sélectionne les lignes NE contenant PAS le motif-n
: préfixe chaque ligne de sortie avec son numéro de ligne-c
: affiche uniquement le nombre total de lignes contenant le motifQuestion 2 : rechercher toutes les occurences du gène ‘oriC’ en affichant le numéro de ligne de chaque occurence dans le fichier Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.37.chromosome.Chromosome.gff3**
Solution ::
grep -ni "oric" Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.37.chromosome.Chromosome.gff3 4859:Chromosome ena gene 1028404 1028721 . - . ID=gene:b0966;Name=hspQ;biotype=protein_coding;description=heat shock protein involved in degradation of mutant DnaA%3B hemimethylated oriC DNA-binding protein;gene_id=b0966;logic_name=ena 8256:Chromosome ena gene 1704949 1705164 . + . ID=gene:b1625;Name=cnu;biotype=protein_coding;description=nucleoid-associated oriC-binding protein%3B H-NS and StpA stabilizing factor;gene_id=b1625;logic_name=ena 18950:Chromosome ena_rep_origin biological_region 3925744 3925975 . + . external_name=oriC%3B origin of chromosomal DNA replication%2C bidirectional%3B oriC%3B b4489%3B ECK3735%3B JWS0001;logic_name=ena_rep_origin 22228:Chromosome ena gene 4634441 4635310 . - . ID=gene:b4396;Name=rob;biotype=protein_coding;description=right oriC-binding transcriptional activator%2C AraC family;gene_id=b4396;logic_name=ena
La commande cut
permet d’extraire une ou plusieurs colonnes d’un fichier.
L’option -c
permet d’utiliser les positions des caractères dans le fichier
(cad dire les numéro des colonnes).
Exemple : extraction des caractères 1 à 10 d’un fichier
$ cut -c 1-10 <FILE>
L’option -f
permet de spécifier les positions des champs (fields) dans le fichier.
Le délimitateur par défaut est la tabulation, on peut le changer avec l’option -d
.
Exemple : extraction de la deuxième colonne d’un fichier au format csv
$ cut -d "," -f 2 <CSV_FILE>
Question 3 : Rendez-vous dans le répertoire Escherichia_coli/bacterial-regulons_myers_2013/data/RNA-seq
.
Extraire de deux manières différentes la colonne Geneid du fichier cutadapt_bwa_featureCounts_all.tsv
**
Solution :
$ cut -f 1 cutadapt_bwa_featureCounts_all.tsv [...] b4400 b4401 b4402 b4403 $ cut -c 1-6 cutadapt_bwa_featureCounts_all.tsv [...] b4400 b4401 b4402 b4403
La commande sort
permet de trier les lignes du ou des fichiers donnés en argument
Attention: le tri par défaut est selon le code ASCII et pas selon
l’ordre numérique.
Pour faire un tri numérique, utiliser l’option -g
(plus polyvalente que l’option -n
habituellement préconisée).
Question 4 : Extraire la 2ème colonne ‘WT1’ du fichier cutadapt_bwa_featureCounts_all.tsv
en redirigeant le résultat dans un fichier de sortie ‘cutadapt_bwa_featureCounts_WT1.tsv’.
Trier ensuite les valeurs de ce fichier par ordre croissant et écrire le résultat
dans le fichier cutadapt_bwa_featureCounts_WT1_sorted.tsv
.
Solution :
cut -f 2 cutadapt_bwa_featureCounts_all.tsv > cutadapt_bwa_featureCounts_WT1.tsv sort -g cutadapt_bwa_featureCounts_WT1.tsv > cutadapt_bwa_featureCounts_WT1_sorted.tsv
La commande uniq
permet d’éliminer les lignes identiques et consécutives d’un fichier.
Pour éliminer les lignes répétées sur l’ensemble d’un fichier, il est donc nécessaire
de trier le fichier avant d’utiliser la commande uniq
.
Les options les plus couramment utilisées de uniq
sont :
-c
pour afficher le nombre d’occurences de chaque ligne,-d
pour afficher les lignes dupliquées,-i
pour ignore la casse.Question 5 : Éliminer les lignes dupliquées du fichier cutadapt_bwa_featureCounts_WT1_sorted.tsv
et écrire le résultat dans le fichier cutadapt_bwa_featureCounts_WT1_sorted_uniq.tsv
Solution :
$ uniq cutadapt_bwa_featureCounts_WT1_sorted.tsv > cutadapt_bwa_featureCounts_WT1_sorted_uniq.tsv
La commande wc
(word count) permet de compter le nombre de lignes, de mots
et de caractères du fichier ou des fichiers donnés en argument.
Question 6 : Comment afficher uniquement le nombre de lignes d’un fichier ?
Combien de lignes y a-t-il dans les fichiers cutadapt_bwa_featureCounts_WT1_sorted.tsv
et cutadapt_bwa_featureCounts_WT1_sorted_uniq.tsv
?
Solution :
$ wc -l cutadapt_bwa_featureCounts_WT1_sorted.tsv 4498 cutadapt_bwa_featureCounts_WT1_sorted.tsv $ wc -l cutadapt_bwa_featureCounts_WT1_sorted_uniq.tsv 1357 cutadapt_bwa_featureCounts_WT1_sorted_uniq.tsv
La possibilité de redirection de l’entrée ou de la sortie standard est une notion fondamentale du système d’exploitation Linux.
Par défaut tout programme Linux a trois flots de direction :
stdin
par défaut associée au clavierstdout
, par défaut associée à l’écranstderr
, par défaut associée à l’écranUne redirection est une modification de l’une de ces associations. Elle est valable uniquement le temps de la commande sur laquelle elle porte.
Pour modifier l’entrée standard d’une commande en lisant les données d’un
fichier infile
on utilise < infile
.
Pour modifier la sortie standard d’une commande et écrire les résultats dans un
fichier outfile
on utilise > outfile
ou >> outfile
Pour modifier l’erreur standard d’une commande et écrire les messages d’erreurs
dans un fichier errfile
on utilise : 2> errfile
.
En résumé toute commande Linux peut s’écrire
$cmd < infile > outfile 2> errfile
Question 7: rediriger le résultat de la commande cat
sur le fichier
ChIP-seq/FNR1_vs_input1_cutadapt_bowtie2_homer.bed
dans le fichier test.txt
.
Que contient le fichier test.txt
?
Réponse
$ cat ChIP-seq/FNR1_vs_input1_cutadapt_bowtie2_homer.bed > test.txt
cat
affiche le contenu deChIP-seq/FNR1_vs_input1_cutadapt_bowtie2_homer.bed
.>
redirige la sortie de la commande vers le fichiertest.txt
. Finalement, le fichiertest.txt
contient le contenu du fichierChIP-seq/FNR1_vs_input1_cutadapt_bowtie2_homer.bed
.
|
Le |
est une manière simple et élégante d’enchainer des commandes sous Unix.
Nous avons déjà vu qu’il est possible de rediriger l’entrée, ou la sortie standard,
ou la sortie erreur d’une commande vers un fichier de son choix.
Le |
permet rediriger la sortie d’une commande vers l’entrée d’une autre commande.
On peut enchainer un nombre pratiquement illimité de commandes grâce à des pipes.
Question 8 : Comment afficher page par page le nombre d’occurences de chaque
valeur de la colonne WT1
du fichier cutadapt_bwa_featureCounts_all.tsv
en 1 seule commande ?**
Solution :
$ cut -f 2 cutadapt_bwa_featureCounts_all.tsv | sort -g | uniq -c | less
Question 9 : Utiliser le |
et les commandes précédentes pour déterminer le nombre de gènes uniques dans le fichier Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.37.chromosome.Chromosome.gff3
Le fichier est dans le répertoire ~/dubii/study_cases/Escherichia_coli/
Indication : les noms de gènes se trouvent dans la 9ème colonne du fichier gff3
Solution :
$ cut -f 9 ~/dubii/study-cases/Escherichia_coli/Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.37.chromosome.Chromosome.gff3 | cut -d ";" -f 1 | grep "ID=gene" | sort -u | wc -l 4497