« Bash : Pattern Matching » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « Issu de : https://www.linuxjournal.com/content/pattern-matching-bash Il s'agit ici de "globbing", c'est-à-dire, l'expansion des fonctionnalités des wildcards (* e... ») |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
Issu de : https://www.linuxjournal.com/content/pattern-matching-bash Il s'agit ici de "globbing", c'est-à-dire, l'expansion des fonctionnalités des wildcards (* et ?). Il ne s'agit donc pas ici d'expression régulières, bien que celles-ci puissent être utilisées conjointement avec du globbing. Les patterns de glob de Bash sont les suivants : | |||
Issu de : [https://www.linuxjournal.com/content/pattern-matching-bash https://www.linuxjournal.com/content/pattern-matching-bash] | |||
Ressources : | |||
https://www.tldp.org/LDP/abs/html/globbingref.html | |||
= Globbing = | |||
Il s'agit ici de "globbing", c'est-à-dire, l'expansion des fonctionnalités des wildcards (* et ?). Il ne s'agit donc pas ici d'expression régulières, bien que celles-ci puissent être utilisées conjointement avec du globbing. Les patterns de glob de Bash sont les suivants : | |||
{| class="docutils" border="1" | {| class="docutils" border="1" | ||
|- | |- | ||
Ligne 29 : | Ligne 39 : | ||
| Match anything that doesn't match one of the patterns (extglob) | | Match anything that doesn't match one of the patterns (extglob) | ||
|} | |} | ||
Exemples : <pre>$ ls | |||
Exemples : | |||
<pre>$ ls | |||
a.jpg b.gif c.png d.pdf ee.pdf | a.jpg b.gif c.png d.pdf ee.pdf | ||
Ligne 35 : | Ligne 47 : | ||
a.jpg | a.jpg | ||
$ ls ?.pdf | $ ls ?.pdf | ||
d.pdf | d.pdf | ||
Ligne 43 : | Ligne 55 : | ||
$ shopt -s extglob # turn on extended globbing | $ shopt -s extglob # turn on extended globbing | ||
$ ls ?(*.jpg|*.gif) | $ ls ?(*.jpg|*.gif) | ||
a.jpg b.gif | a.jpg b.gif | ||
$ ls !(*.jpg|*.gif) # not a jpg or a gif | $ ls !(*.jpg|*.gif) # not a jpg or a gif | ||
c.png d.pdf ee.pdf | c.png d.pdf ee.pdf | ||
</pre> | </pre> | ||
Ligne 52 : | Ligne 64 : | ||
<span class="go">ee.pdf e.pdf .pdf</span> | <span class="go">ee.pdf e.pdf .pdf</span> | ||
<span class="gp">$</span> ls ?<span class="o">(</span>e<span class="o">)</span>.pdf <span class="c1"># zero or one "e" allowed</span> | <span class="gp">$</span> ls ?<span class="o">(</span>e<span class="o">)</span>.pdf <span class="c1"># zero or one "e" allowed</span> | ||
<span class="go">e.pdf .pdf</span> | <span class="go">e.pdf .pdf</span> | ||
Version du 16 avril 2019 à 12:27
Issu de : https://www.linuxjournal.com/content/pattern-matching-bash
Ressources :
https://www.tldp.org/LDP/abs/html/globbingref.html
Globbing
Il s'agit ici de "globbing", c'est-à-dire, l'expansion des fonctionnalités des wildcards (* et ?). Il ne s'agit donc pas ici d'expression régulières, bien que celles-ci puissent être utilisées conjointement avec du globbing. Les patterns de glob de Bash sont les suivants :
Pattern | Description |
---|---|
* | Match zero or more characters |
? | Match any single character |
[...] | Match any of the characters in a set |
?(patterns) | Match zero or one occurrences of the patterns (extglob) |
*(patterns) | Match zero or more occurrences of the patterns (extglob) |
+(patterns) | Match one or more occurrences of the patterns (extglob) |
@(patterns) | Match one occurrence of the patterns (extglob) |
!(patterns) | Match anything that doesn't match one of the patterns (extglob) |
Exemples :
$ ls a.jpg b.gif c.png d.pdf ee.pdf $ ls *.jpg a.jpg $ ls ?.pdf d.pdf $ ls [ab]* a.jpg b.gif $ shopt -s extglob # turn on extended globbing $ ls ?(*.jpg|*.gif) a.jpg b.gif $ ls !(*.jpg|*.gif) # not a jpg or a gif c.png d.pdf ee.pdf
<span class="gp">$</span> ls *.pdf <span class="go">ee.pdf e.pdf .pdf</span> <span class="gp">$</span> ls ?<span class="o">(</span>e<span class="o">)</span>.pdf <span class="c1"># zero or one "e" allowed</span> <span class="go">e.pdf .pdf</span> <span class="gp">$</span> ls *<span class="o">(</span>e<span class="o">)</span>.pdf <span class="c1"># zero or more "e"s allowed</span> <span class="go">ee.pdf e.pdf .pdf</span> <span class="gp">$</span> ls +<span class="o">(</span>e<span class="o">)</span>.pdf <span class="c1"># one or more "e"s allowed</span> <span class="go">ee.pdf e.pdf</span> <span class="gp">$</span> ls @<span class="o">(</span>e<span class="o">)</span>.pdf <span class="c1"># only one e allowed</span> <span class="go">e.pdf</span>
Les glob sont juste une autre façon de trouver des patterns spécifique en bash, et on peut les utiliser un peu partout; après un ==, dans un case, etc.
$ shopt +s extglob $ a=something $ if [[ $a == +(some|any)thing ]]; then echo yes; else echo no; fi yes $ a=anything $ if [[ $a == +(some|any)thing ]]; then echo yes; else echo no; fi yes $ a=nothing $ if [[ $a == +(some|any)thing ]]; then echo yes; else echo no; fi no