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 [14/08/2014 18:41] Hypathie [Introduction] |
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [15/08/2014 09:18] 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> | ||
===Métacaractère ou caractère d'expression rationnelle ?=== | ===Métacaractère ou caractère d'expression rationnelle ?=== | ||
Ligne 119: | Ligne 141: | ||
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 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 265: | Ligne 273: | ||
>Affiche les lignes dont la troisième colonne comporte un "e" ou un "E" de TOUS les fichiers du répertoire "~/ERetCMD/Dossier" commençant par "smolski-". | >Affiche les lignes dont la troisième colonne comporte un "e" ou un "E" de TOUS les fichiers du répertoire "~/ERetCMD/Dossier" commençant par "smolski-". | ||
>Le caractère ''~'' (tilde) est un opérateur de correspondance relevant de la commande awk. | >Le caractère ''~'' (tilde) est un opérateur de correspondance relevant de la commande awk. | ||
- | >Il permet de tester la correspondance entre la variable ''$3'' et l'expression rationnelle encadrée de ''/'' (''/(e|E)/''). Voir [[doc:programmation:awk|awk]] et [[http://wiki.debian-facile.org/utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes#awk-et-les-caracteres-communs-aux-erb-et-ere|awk et les expressions rationnelles]] | + | >Il permet de tester la correspondance entre la variable ''$3'' et l'expression rationnelle encadrée de ''/'' (''/(e|E)/''). Voir [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes#awk-et-les-caracteres-communs-aux-erb-et-ere|awk et les expressions rationnelles]] |
<code> | <code> | ||
Ligne 292: | Ligne 300: | ||
</note> | </note> | ||
- | **Puisque tout est bien clair, nous pouvons aller plus loin, et présenter comment utiliser les programmes GNU/Linux permettant d'utiliser les expressions rationnelles. Cela permettra aussi, non seulement de distinguer ERb, ERe et classes, mais encore d'en apprécier les différents types.** 8-) | + | **Puisque tout est bien clair, nous pouvons aller plus loin, et présenter le détail des expressions rationnelles ainsi que leur utilisation avec les programmes GNU/Linux. Cela permettra, non seulement de distinguer ERb, ERe et classes, mais encore d'en apprécier les différences.** 8-) |
=====Les expressions rationnelles basiques et les commandes GNU/Linux===== | =====Les expressions rationnelles basiques et les commandes GNU/Linux===== | ||
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> | ||
>La dernière ligne du fichier est vide. | >La dernière ligne du fichier est vide. | ||
- | ===le caractère début de ligne ^ === | + | ===Le caractère début de ligne ^ === |
<code user>grep "^4" liste1-nom</code> | <code user>grep "^4" liste1-nom</code> | ||
4 5 Béatrice | 4 5 Béatrice | ||
- | *le caractère fin de ligne $ | + | ===Le caractère fin de ligne $ === |
<code user>grep "e$" liste1-nom</code> | <code user>grep "e$" liste1-nom</code> | ||
Ligne 371: | Ligne 380: | ||
<code user>grep "^$" liste1-nom</code> | <code user>grep "^$" liste1-nom</code> | ||
- | ===le point=== | + | ===Le point=== |
<code user>grep ".dith" liste1-nom</code> | <code user>grep ".dith" liste1-nom</code> | ||
2 3 Édith | 2 3 Édith | ||
- | ===l'étoile=== | + | ===L'étoile=== |
<code user>grep "A*" liste1-nom</code> | <code user>grep "A*" liste1-nom</code> | ||
<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 400: | Ligne 409: | ||
123 AAAAAA | 123 AAAAAA | ||
- | ===les crochets=== | + | ===Les crochets=== |
<code user>grep "[43]" liste1-nom</code> | <code user>grep "[43]" liste1-nom</code> | ||
Ligne 410: | Ligne 419: | ||
>les lignes comportant 4 ou 3 | >les lignes comportant 4 ou 3 | ||
- | ===le caractère d'exclusion d'une liste [^ ]=== | + | ===Le caractère d'exclusion d'une liste [^ ]=== |
>Chaîne qui commence ni par 1, ni par 2, ni par aucun des caractères entre crochets. | >Chaîne qui commence ni par 1, ni par 2, ni par aucun des caractères entre crochets. | ||
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 :\\ |