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:accueil [18/07/2014 06:29] Hypathie [Synthèse sed] |
utilisateurs:hypathie:tutos:accueil [19/07/2014 08:50] Hypathie [Synthèse sed] |
||
---|---|---|---|
Ligne 164: | Ligne 164: | ||
|''-i'' | ignorer la case | | |''-i'' | ignorer la case | | ||
|''-E'' |utiliser les regexp étendues\\ (correspond à egrep) | | |''-E'' |utiliser les regexp étendues\\ (correspond à egrep) | | ||
+ | |''-o'' |afficher uniquement les parties (non vides) correspondantes des lignes sélectionnées, chaque partie étant affichée sur une ligne séparée.| | ||
+ | |||
> Deux utilisations:\\ | > Deux utilisations:\\ | ||
>Soit ''grep [options] "expression" /chemin/fichier'' (on applique grep sur un fichier) | >Soit ''grep [options] "expression" /chemin/fichier'' (on applique grep sur un fichier) | ||
- | >Soit ''grep [options] cmd | regexp'' (on travaille à partir d'un flux d'entrée avec un filtre (pipe)\\ | + | >Soit ''cmd | grep [options]'' (on travaille à partir d'un flux d'entrée avec un filtre (pipe)\\ |
Ligne 179: | Ligne 181: | ||
===Filtre un flux d'entrée === | ===Filtre un flux d'entrée === | ||
+ | <code user> | ||
+ | /sbin/ifconfig | grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | ||
+ | </code> | ||
+ | <code> | ||
+ | inet adr:192.168.0.22 Bcast:192.168.0.255 Masque:255.255.255.0 | ||
+ | inet adr:127.0.0.1 Masque:255.0.0.0 | ||
+ | </code> | ||
<code user> | <code user> | ||
/sbin/ifconfig | grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | /sbin/ifconfig | grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | ||
Ligne 188: | Ligne 197: | ||
192.168.0.255 | 192.168.0.255 | ||
255.255.255.0 | 255.255.255.0 | ||
+ | </code> | ||
+ | |||
+ | <note tip> | ||
+ | Attention de ne pas oublier ''-o'' pour afficher l'occurrence exacte d'un mot au lieu de la ligne entière où figure l'occurrence du mot ! | ||
+ | </note> | ||
+ | <code user> | ||
+ | echo "bfer aaa jhgao aaaaaa haug aaaaaaaa" | grep -E "[[:blank:]][a]{3}[[:blank:]]" | ||
+ | </code> | ||
+ | <code> | ||
+ | bfer aaa jhgao aaaaaa haug aaaaaaaa | ||
+ | </code> | ||
+ | |||
+ | <code user> | ||
+ | echo "bfer aaa jhgao aaaaaa haug aaaaaaaa" | grep -oE "[[:blank:]][a]{3}[[:blank:]]" | ||
+ | </code> | ||
+ | <code> | ||
+ | aaa | ||
</code> | </code> | ||
=====Synthèse sed ===== | =====Synthèse sed ===== | ||
Ligne 281: | Ligne 307: | ||
</code> | </code> | ||
>On peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'option ''-r''. | >On peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'option ''-r''. | ||
- | <code text man sed> | ||
- | -r, --regexp-extended | ||
- | use extended regular expressions in the script. | + | <code text info sed> |
- | //[...]// | + | `-r' |
- | REGULAR EXPRESSIONS | + | `--regexp-extended' |
- | POSIX.2 BREs should be supported, but they aren't completely because of | + | Use extended regular expressions rather than basic regular |
- | performance problems. The \n sequence in a regular expression matches | + | expressions. Extended regexps are those that `egrep' accepts; |
- | the newline character, and similarly for \a, \t, and other sequences. | + | they can be clearer because they usually have less backslashes, |
+ | but are a GNU extension and hence scripts that use them are not | ||
+ | portable. *Note Extended regular expressions: Extended regexps. | ||
</code> | </code> | ||
<note> | <note> | ||
- | * sans ''-r'' : | + | Sed utilise une version particulière des expressions régulières. |
- | métacaractères : ''[ ]'' ; ''.'' ; ''*''\\ | + | |
- | //ER// simples : ''?'' ; ''^'' ; ''$'' ; ''+'' ; ''|'' ; ''( )'' | + | * Sans l'option ''-r'' : |
+ | |||
+ | Sed couvre des expressions régulières de base (POSIX). Il s'agit des caractères de bases qui sont communs à tous les programmes utilisant les expressions régulières.\\ En voici un rappel : | ||
+ | ''*'', '','', ''^'', ''$'', ''[ ]'', ''[^ ]'', ''\( \)'', ''\n'', ''\{n\}'', ''\{n,m\}'', ''\{n,\}''. | ||
* avec ''-r'' : | * avec ''-r'' : | ||
- | //ER// étendues : | + | |
+ | Il s'y ajoute les caractères POSIX étendus :\\ | ||
+ | ''|'' ; ''^'' ; ''$'' ; ''.'' ; ''*'' ; ''+'' ; ''?'' ; ''( )'' ; ''['' ; ''{ }'' ; ''\'' ; ''[:alpha:]'', ''[:blank:]'', ''[:cntrl:]'', ''[:digit:]'', ''[:graph:]'', ''[:lower:]'', ''[:print:]'', ''[:punct:]'', ''[:space:]'', ''[:upper:]'', ''[:xdigit:]''\\ | ||
+ | Pour résumer, tous les caractères de ce tableau fonctionnent avec ''sed -r'' : [[atelier:chantier:bash-vii-globs-etendus-regex#tableau-des-caracteres-utilises-dans-les-expressions-regulieres-etendues]] | ||
+ | |||
+ | Il s'y ajoute enfin quelques un caractères que l'on retrouve sous Perl :\\ | ||
+ | ''\b'', ''\B'', ''\w'', ''\W'', ''\s'', ''\S'', ''\`'', ''\''', ''\<'', ''\>'' | ||
+ | |||
+ | Ainsi que : | ||
+ | ''\a'' (caractère alerte), ''\f'' (saut), ''\n'' (saut de ligne), ''\r'' (retour chariot), ''\''t (tabulation horizontale), ''\v'' (tabulation verticale), ''\cx'' (Control-x ), ''\dxxx'' (caractère en valeur ascii décimal), ''\OXXX'' (caractère par valeur aSCII octal), ''\xhh'' (caractère par valeur aSCII hexadécimal). | ||
</note> | </note> | ||
=== Syntaxe d'adressage avec exemple la commande de suppression === | === Syntaxe d'adressage avec exemple la commande de suppression === |