Cours UNIX - Chapitre 5 - Filtres
Les ense!bles sont #éli!ités par les caract,res 1 et 2+ Une série #e caract,res peut .tre expri!ée a"ec le caract,re -+
Cours UNIX
Exe!ples4
Chapitre 5 Filtres
18:<=> 18:<=>5?@ 5?@A2 A2
n$i!po n$i!porte rte &uel &uel chi%% chi%%re+ re+
18-A2
n$i!porte &uel chi%%re+
1a-B 1a-B2 2
n$i!po i !port rtee &ue &uell car carac act, t,re re #e #e a D B (!in (!inus uscu cule les) s) ou le cara caract ct,r ,ree + +
13a13a-B2 B2
n$i!po i !port rtee &uel &uel car carac act, t,re re U UF F les les cara caract ct,r ,res es #e #e a D B en en !inu !inusc scul ule+ e+
Les expressions rationnelles
Exemples
Les expressions expressions rationnelles rationnelles (Regular Expressions Expressions)) sont beaucoup utilisées utilisées sous UNIX et nota!!ent a"ec les outils #$é#itions #e texte et les %iltres &ue nous allons "oir #ans ce chapitre ainsi &ue #ans no!bre #e langages #e progra!!ation (en particulier #ans 'a"ascript erl et Rub*)+ Il s$agit #$un !écanis!e &ui per!et #e #écrire #es ense!bles #e caract,res #ans le ca#re #$une recherche ou #$un re!place!ent #e texte+ ans les expressions rationnelles la !anipulation #e %ichiers texte en ligne #e co!!an#e ou par progra!!ation est un "éritable cauche!ar+ Les expressions expressions rationnelles rationnelles sont extr.!e!ent extr.!e!ent utiles utiles sous UNIX UNIX étant #onné &ue tous les %ichiers #e con%iguration et #e /ournalisation (logs) sont #es %ichiers texte+
abc6
lignes se ter!inant par abc
3abc
lignes co!!enant par abc
1abc2
li gn gnes contenan t les lettres a ou b ou c
31abc2
lignes co co!!enant pa par a ou b ou c
+7
toutes les lignes
3+++6
toutes les lignes #e = caract,res+
Sous ensembles
Caractères spéciaux 12
#é%ini #é%inition tion #$un #$un ense ense!bl !blee #e cara caract, ct,res res ("oi ("oirr ci-#e ci-#esso ssous) us)
er!ettent #e #é%inir #es sous-ense!ble #ans un ense!ble #e caract,re+ Les sous-ense!bles sont placés entres 0( et 0) et peu"ent .tres rappelés par un nu!éro correspon#ant D leur or#re #e #éclaration précé#é #u caract,re 0+
3
#eux si signi%ications4
Exe!ples4
our neutraliser un caract,re spécial le précé#er #u caract,re 0 ( anti-slash )+
–
–
ébut #e ligne lors&u$il est au #ébut #e l$expression ratio nnelle
0(<518-A270)+70:+70:
Co!plé!ent (négation) #e l$ense!ble #e caract,res si il est /uste apr,s le caract,re 1
6
%in %in #e lign lignee lors& lors&u$ u$il il est est en %in %in #$expr e xpres essi sion on rati rationn onnell ellee
+
#ési #ésign gnee n$ n$i!po i!port rtee &ue &uell car caraact,r ct,ree
7
re!pla re!place ce 8 ou n %ois %ois le carac caract,r t,ree ou l$ense l$ense!bl !blee &ui &ui le le préc, préc,#e+ #e+
9
re!pla re!place ce : ou n %ois %ois le caract caract,re ,re ou ou l$ense!b e nse!ble le &ui &ui le le préc, préc,#e+ #e+
;
re!pla re!place ce 8 ou : %ois %ois le cara caract, ct,re re ou ou l$en l$ense! se!ble ble &ui le préc préc,#e ,#e++
toutes les lignes contenant = %ois le pre!ier chi%%re trou"é co!!enant par <5+
Ensembles R @58 <@G8>G:8
page :
� <888H<8:8
CL H http4GGJJJ+e-c!l+orgG
Cours UNIX - Chapitre 5 - Filtres
Les co!!an#es sont #e la %or!e4
Grep
[adresse+[adresse%] [adresse+[adresse%]] ] fonction [arguments...] [arguments...]
Krep (Klobal (Klobal Regular Regular Expression Expression rinter) per!et #e %aire #es recherches recherches #e lignes contenant une chane correspon#ant D une expression rationnelle+
Les a#resses sont4
*ntaxe4 grep
•
#es no!bres #éci!aux correspon#ant D #es nu!éros #e lignes+
•
Le caract,re 6 #ésignant la #erni,re ligne
[options] 'expressionrat ionnelle' [fichiers...]
i aucun %ichier n$est précisé (en #ernier argu!ent) alors c$est l$entrée stan#ar# &ui est %iltrée+
Exe!ple4 :86 #ésigne #e la :8,!e D la #erni,re ligne+
Mptions coura!!ent utilisées4 -"
in"ers in"ersee #e la recher recherche che (tout (toutes es les les lignes lignes ne cont contenan enantt pas l$expre l$expressi ssion) on)++
-c
a%%i a%%ich chee le le no! no!br bree #e #e lig ligne ness tro trou" u"ée ées+ s+
i les a#resses ne sont pas spéci%iées la co!!an#e est exécutée sur toutes les lignes+
Exe!ples4
Co!!an#es coura!!ent utilisées4
# grep '^[aw-z]' zip auditd auditd xnstime ...
/etc/services 6/ddp #Zone Information Information Protocol 4/tcp #!igital "udit !aemon 4/udp #!igital "udit !aemon $%/tcp #&( )ime Protocol
*Gtexte:Gtexte< substitution (re!place!ent) #$un texte par un autre+ sGexpressionrationnelleGtexteG%lags substituti substitution on (re!place!e (re!place!ent) nt) #$un texte par un autre D l$ai#e #$une expression expression rationnelle+ Flags peut .tre entre autre4
# cat /etc/services | grep '^t[^t]o' troff %*+4/tcp # ls -l /etc r,rr r,rr r,rr ...
| + + +
grep 'rc\..*$' root ,heel ,heel root ,heel ,heel root ,heel ,heel
•
g
re!plac re!placer er toute toutess les les occur occurren rences ces #ans #ans une une !.!e !.!e lign ligne+ e+
Mptions coura!!ent utilisées4
4-* o %* %*** rc.atm %+0 1a2 %+ *-3+ rc.conf +660 o %* %*** rc.defs
-n
ne pas pas a%% a%%ic iche herr la lign lignee &ui "ie "ient nt #$.tre . tre trait traitée ée++
Exe!ples4
Sed e# (trea! E#itor) est un é#iteur &ui poss,#e les !.!es %onctionnalités &ue l$é#iteur ed !ais &ui ne tra"aille tra"aille pas en !o#e interacti%+ interacti%+ Il per!et per!et #onc contraire!ent contraire!ent D grep #e !o#i%ier le %lux #e lignes &ui lui est passé+ *ntaxe4
# cat /etc/rc.conf ... ifconfig5xl*7inet +*.*.*.+ netmas8 %$$.%$$.%$$.*7 ... # cat /etc/rc.conf | sed 's/255\./\./g' ... ifconfig5xl*7inet +*.*.*.+ netmas8 xxx.xxx.xxx.*7 ...
sed [options] 'commande' [fichiers..]
R @58 <@G8>G:8
page <
� <888H<8:8
CL H http4GGJJJ+e-c!l+orgG