Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [15/08/2014 06:51] Hypathie [Les expressions rationnelles basiques et les commandes GNU/Linux] |
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [15/08/2014 09:56] Hypathie [Introduction] |
||
---|---|---|---|
Ligne 64: | Ligne 64: | ||
|**''[ ]''** |un caractère cité dans la liste entre crochets |''echo [Tt][io]t[io]''((echo "Toto Tito toto toti tito loto" | echo [Tt][io]t[io]))\\ **affiche les fichiers**\\ Toto\\ Tito\\ toto\\ toti\\ ...\\ **mais pas**\\ loto\\ ... | | |**''[ ]''** |un caractère cité dans la liste entre crochets |''echo [Tt][io]t[io]''((echo "Toto Tito toto toti tito loto" | echo [Tt][io]t[io]))\\ **affiche les fichiers**\\ Toto\\ Tito\\ toto\\ toti\\ ...\\ **mais pas**\\ loto\\ ... | | ||
|**''[ - ]''**\\ [a-z]\\ [A-Z]\\ [A-Z]\\ [0-9] |groupe de caractères |''head t[a-z]to''\\ **affiche**\\ titi\\ tito\\ toto\\ ...\\ **mais pas**\\ tOto\\ t5to\\ | | |**''[ - ]''**\\ [a-z]\\ [A-Z]\\ [A-Z]\\ [0-9] |groupe de caractères |''head t[a-z]to''\\ **affiche**\\ titi\\ tito\\ toto\\ ...\\ **mais pas**\\ tOto\\ t5to\\ | | ||
+ | |||
+ | ===Préparation=== | ||
+ | |||
+ | * Exécuter cette ligne de commande : | ||
+ | <code user> | ||
+ | mkdir ERetCMD/ && cd ERetCMD/ && mkdir Dossier/ &&\ | ||
+ | cd Dossier/ && touch milou && touch tata &&\ | ||
+ | printf "Toto Titi toto titi tito\ndans\n" > titi &&\ | ||
+ | printf "Toto Titi\ndent\n" > titi2 &&\ | ||
+ | printf "toto aime le chocolat\n" > toto &&\ | ||
+ | printf "Toto titi toto tito\n" > Toto.txt &&\ | ||
+ | printf "un copain malin\nmodifiant cette page\n" > tintin &&\ | ||
+ | printf "documentation\n" > titi1 && printf "." > titi1.txt &&\ | ||
+ | printf "Il manque une option a tito\n" > tito &&\ | ||
+ | printf "il a tout mangé.\n" > Toto1.txt | ||
+ | ls | ||
+ | </code> | ||
+ | |||
+ | <code> | ||
+ | milou tintin titi1 titi2 toto Toto.txt | ||
+ | tata titi titi1.txt tito Toto1.txt | ||
+ | </code> | ||
+ | |||
+ | <note> | ||
+ | Il est nécessaire d'avoir dossier, sous-dossier, et des fichiers ayant ou non du contenu pour s'exercer.\\ | ||
+ | Mais pas d'inquiétude, tout ce qui a été créé ou qui le sera, peut être supprimer en une ligne: | ||
+ | <code user> | ||
+ | cd ~ && rm -vfR ERetCMD/ | ||
+ | </code> | ||
+ | Tous les dossiers et fichiers créés dans le dossier "ERetCMD" au cours de cette partie serviront aux exemples pour utiliser les expressions rationnelles sur la totalité du wiki. | ||
+ | </note> | ||
===Métacaractère ou caractère d'expression rationnelle ?=== | ===Métacaractère ou caractère d'expression rationnelle ?=== | ||
* L'étoile : | * L'étoile : | ||
- | Imaginons qu'on cherche __tous les fichiers__ contenant le caractère "e".\\ | + | Imaginons qu'on cherche __tous les fichiers commençant par "t"__ contenant le caractère "e".\\ |
- | <code user>grep -lR "e" Toto*</code> | + | <code user>grep -lR "e" t*</code> |
+ | <code> | ||
+ | tintin | ||
+ | titi1 | ||
+ | titi2 | ||
+ | tito | ||
+ | toto | ||
+ | </code> | ||
> option -l : Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels des résultats auraient été affichés. | > option -l : Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels des résultats auraient été affichés. | ||
Ligne 80: | Ligne 118: | ||
<code>grep -E "[ae]n.?" titi?</code> | <code>grep -E "[ae]n.?" titi?</code> | ||
<code> | <code> | ||
- | titi.:dans | + | titi1:documentation |
- | titi1:en | + | |
titi2:dent | titi2:dent | ||
</code> | </code> | ||
Ligne 97: | Ligne 134: | ||
<code user>grep "[Tt][io]t[io]" [Tt][io]t[io]?</code> | <code user>grep "[Tt][io]t[io]" [Tt][io]t[io]?</code> | ||
<code> | <code> | ||
- | titi.:Toto Titi toto titi tito | + | grep "[Tt][io]t[io]" [Tt][io]t[io]? |
- | titi1:Toto titi toto tito | + | |
- | titi2:Toto Titi | + | |
- | toto.:Toto titi toto tito | + | |
</code> | </code> | ||
Ligne 111: | Ligne 145: | ||
<code> | <code> | ||
titi1.txt:. | titi1.txt:. | ||
- | Toto1.txt:. | + | Toto1.txt:il a tout mangé. |
</code> | </code> | ||
Ligne 119: | Ligne 153: | ||
Il s'agit de **find** et **locate**. | Il s'agit de **find** et **locate**. | ||
- | |||
- | ===Péparation=== | ||
- | * créer le répertoire "~/ERetCMD/" et ~/ERetCMD/Dossier: | ||
- | <code user>mkdir ERetCMD/ && cd ERetCMD/ && mkdir Dossier/</code> | ||
- | |||
- | * Créer les fichiers suivants : | ||
- | <code user>cd Dossier/ && touch milou test titi\ | ||
- | titi1 titi2 tito toto. Toto.txt tata tintin titi.\ | ||
- | titi.txt titi1.txt toto Toto1.txt | ||
- | </code> | ||
- | |||
- | * Pour supprimer le répertoire et tout son contenu : | ||
- | (néanmoins, ils serviront pour l'ensemble du wiki) | ||
- | <code>rm -vfR ERetcmd/</code> | ||
=== find=== | === find=== | ||
Ligne 142: | Ligne 162: | ||
<code> | <code> | ||
/home/hypathie/ERetCMD/Dossier/toto | /home/hypathie/ERetCMD/Dossier/toto | ||
- | /home/hypathie/ERetCMD/Dossier/toto. | ||
</code> | </code> | ||
Ligne 151: | Ligne 170: | ||
/home/hypathie/ERetCMD/Dossier/titi1 | /home/hypathie/ERetCMD/Dossier/titi1 | ||
/home/hypathie/ERetCMD/Dossier/titi2 | /home/hypathie/ERetCMD/Dossier/titi2 | ||
- | /home/hypathie/ERetCMD/Dossier/titi. | ||
</code> | </code> | ||
Ligne 160: | Ligne 178: | ||
/home/hypathie/ERetCMD/Dossier/titi1 | /home/hypathie/ERetCMD/Dossier/titi1 | ||
/home/hypathie/ERetCMD/Dossier/titi2 | /home/hypathie/ERetCMD/Dossier/titi2 | ||
- | /home/hypathie/ERetCMD/Dossier/toto. | ||
- | /home/hypathie/ERetCMD/Dossier/titi. | ||
</code> | </code> | ||
Ligne 168: | Ligne 184: | ||
* Préparation : | * Préparation : | ||
- | Soit le même répertoire "~/ERetCMD/" ; y créer les fichiers suivants : | + | Se déplacer dans le répertoire "~/ERetCMD/" ; y créer les fichiers suivants en faisant : |
<code user> | <code user> | ||
- | touch liste liste1 liste1-nom liste2\ | + | cd ~/ERetCMD/ && touch liste liste1 liste1-nom liste2\ |
liste2-nom liste3-erb-ere liste4-spec\ | liste2-nom liste3-erb-ere liste4-spec\ | ||
liste4-vim liste-class server-0.xkb smolski-exo-sed.txt\ | liste4-vim liste-class server-0.xkb smolski-exo-sed.txt\ | ||
Ligne 176: | Ligne 192: | ||
image\ linux\ -\ 01.jpg image\ linux\ -\ 02.jpg\ | image\ linux\ -\ 01.jpg image\ linux\ -\ 02.jpg\ | ||
image\ linux\ -\ 03.jpg img-perso-1.jpg img-perso-2.jpg | image\ linux\ -\ 03.jpg img-perso-1.jpg img-perso-2.jpg | ||
+ | ls | ||
</code> | </code> | ||
- | |||
- | <code>ls ~/ERetCMD/</code> | ||
- | |||
<code> | <code> | ||
Ligne 191: | Ligne 205: | ||
<note tip> | <note tip> | ||
Pour utiliser locate, qui fonctionne à partir de la base de donnée, faire un petit : | Pour utiliser locate, qui fonctionne à partir de la base de donnée, faire un petit : | ||
- | <code root> # updatedb</code> | + | <code root>updatedb</code> |
pour effectuer les mises à jour, avant de lancer la recherche. | pour effectuer les mises à jour, avant de lancer la recherche. | ||
</note> | </note> | ||
Ligne 210: | Ligne 224: | ||
* Prépararation : | * Prépararation : | ||
- | Se déplacer au niveau du "~/ERetCMD/Dossier" | + | Vérifier qu'on est bien au niveau du "~/ERetCMD/Dossier/" |
<code user>sed -r '/(a|e).*/s/a/A/' ti*</code> | <code user>sed -r '/(a|e).*/s/a/A/' ti*</code> | ||
Ligne 219: | Ligne 233: | ||
<code> | <code> | ||
un copAin malin | un copAin malin | ||
- | documentAtion | ||
modifiAnt cette page | modifiAnt cette page | ||
- | frAise | ||
- | suivAnte | ||
Toto Titi toto titi tito | Toto Titi toto titi tito | ||
dAns | dAns | ||
- | frAise fraise | + | documentAtion |
- | en | + | |
- | Toto titi toto tito | + | |
. | . | ||
Toto Titi | Toto Titi | ||
dent | dent | ||
- | titi Aime les fraises | ||
Il mAnque une option a tito | Il mAnque une option a tito | ||
</code> | </code> | ||
Ligne 240: | Ligne 248: | ||
Dans le dossier "~/ERetCMD/Dossier" créer les fichiers "smolski-awk.txt" et "smolski-sed.txt": | Dans le dossier "~/ERetCMD/Dossier" créer les fichiers "smolski-awk.txt" et "smolski-sed.txt": | ||
<code user> | <code user> | ||
- | touch smolski-awk.txt && cat >> smolski-sed.txt <<EOF | + | touch smolski-sed.txt && cat >> smolski-sed.txt <<EOF |
toto et titi aiment les abricots. | toto et titi aiment les abricots. | ||
toto préfère les Fraises. | toto préfère les Fraises. | ||
Ligne 248: | Ligne 256: | ||
</code> | </code> | ||
- | <code user>touch smolski-sed.txt && cat >> smolski-awk.txt <<EOF | + | <code user>touch smolski-awk.txt && cat >> smolski-awk.txt <<EOF |
1 3 Nom Genre Age | 1 3 Nom Genre Age | ||
2 1 --------------------------------------- | 2 1 --------------------------------------- | ||
Ligne 334: | Ligne 342: | ||
</note> | </note> | ||
- | * Soit le fichier "liste1-nom" : | + | ===Préparation === |
- | <code> | + | * Dans le répertoire "~/ERetCMD/" inscrire le contenu suivant dans le fichier "liste1-nom" : |
+ | <code>cd ~/ERetCMD/ && cat >> liste1-nom << EOF | ||
1 2 Francine | 1 2 Francine | ||
2 3 Édith | 2 3 Édith | ||
Ligne 348: | Ligne 357: | ||
6 8 Amanda | 6 8 Amanda | ||
+ | EOF | ||
</code> | </code> | ||
Ligne 394: | Ligne 403: | ||
</code> | </code> | ||
- | > Attention, il ne s'agit pas du métacaractère. Étoile signifie "zéro ou plusieurs 'A'" ; **zéro** fois aussi, donc toutes les lignes dépourvues du caractère "A" apparaissent aussi, y compris la ligne vide. | + | > Attention, il ne s'agit pas du métacaractère. Étoile signifie "zéro ou plusieurs 'A'" ; **zéro** fois aussi. Donc toutes les lignes dépourvues du caractère "A" apparaissent aussi, y compris la ligne vide. |
<code user>grep "123 A*" liste1-nom</code> | <code user>grep "123 A*" liste1-nom</code> | ||
Ligne 420: | Ligne 429: | ||
toutefois | toutefois | ||
- | *Chaîne qui ne se termine pas par le caractère "e". | + | *Chaîne qui ne se termine pas l'un des caractères de l'intervalle. |
- | <code user>grep "[^e]$" liste1-nom</code> | + | |
- | + | ||
- | 2 3 Édith | + | |
- | 123 AAAAAA | + | |
- | partout | + | |
- | toutefois | + | |
- | 6 8 Amanda | + | |
- | + | ||
- | *Chaîne qui ne se termine pas l'un des caractères de l'intervalle | + | |
<code user>grep "[^a-z]$" liste1-nom</code> | <code user>grep "[^a-z]$" liste1-nom</code> | ||
Ligne 461: | Ligne 461: | ||
<note tip> | <note tip> | ||
- | Avec find il faut toujours une option pour utiliser une //ER//.\\ | + | Avec find, il faut toujours une option pour utiliser une //ER//.\\ |
* Pour une expression rationnelle basique :\\ | * Pour une expression rationnelle basique :\\ |