Reguliere expressies
Reguliere expressies
Reguliere expressies zijn patronen die in bepaalde tekens of tekencombinaties speciaal worden geïnterpreteerd wanneer zij worden vergeleken met een data-string. grep
, sed
and awk
behandelen patronen als reguliere expressies. Bijvoorbeeld: Het gebruik maken van wildcards in reguliere expressies bij het zoeken naar strings (patronen). Let op: Reguliere expressies zijn anders dan het wildcard-systeem van de shell
Regular expressions zijn:
^
- begin van de regel
$
- einde van de regel
\<
- begin van een woord
\>
- eind van een woord
.
- een enkel karakter
.*
- elk karakter, herhaalde een aantal malen (met inbegrip van geen)
c*
- komt overeen met nul of meer herhalingen van het karakter c
\c
- komt overeen met karakter c (bijzondere betekenis uitgeschakeld)
c?
- één of meer herhalingen van c
[agkAGK]
- komt over een met één van a, g, k, A, G, K
[0-9a-f]
- valt binnen bereik 0-9 of a-f
[^string]
- elk karakter NIET in string
Voorbeelden van patronen
^The
- regel begint met
The
\<[A-Z]
- woord start met een hoofdletter
embar?ass*
- bevat
embaras
, of ieder ander woord met één of meerr
-en of meerderes
-en, dus ookunembaras
,embarased
enz. x.*y
- iedere
x
gevolgd doory
met ieder of geen tekens daartussen
Karakters met een speciale betekenis
Bepaalde tekens worden geïnterpreteerd met een speciale betekenis door de shell. Vaak kunnen ze verschillend worden uitgelegd, afhankelijk van de context.
Voorbeelden
*
- Gebruikt als een wildcard voor een willekeurig aantal karakters. Bijvoorbeeld, ls p * zou een lijst van alle de bestandsnamen in de huidige directory beginnend met de letter
p
. ?
- Gebruikt als een wildcard voor één enkel karakter. Bijvoorbeeld:
ls jun??.dat
laat alle bestanden zien die beginnen metjun
, eindigen met.dat
met twee willekeurige karakters daartussen. [
- Wordt gebruikt om precies aangeven welke tekens de wildcard bevat. Bijvoorbeeld, het commando
rm prog[2-4p-r].c
verwijdert de bestandenprog2.c
,prog3.c
,prog4.c
,progp.c
,progq.c
,progr.c
. ~
- Gebruikt voor het volledige padnaam van een home directory. Bijvoorbeeld:
ls ~mary
toont de inhoud van de home directory van gebruikermary
, wiens volledige padnaam is/u0/xhul/mary
. {
- Accolades kunnen worden gebruikt om bestandsnamen toe te passen in plaats van wildcards, bijvoorbeeld:
rm {prog1,testing,yesterday}.c
verwijdert de bestandenprog1.c
,testing.c
enyesterday.c
. Let wel dat in het laatste voorbeeld er geen spaties na de comma mogen staan. $
- Wordt gebruikt om te verwijzen naar een waarde van een variabele of een veld. Bijvoorbeeld:
echo $PRINTER
toont de huidige waarde van de omgevingsvariabelePRINTER
!
- Wordt gebruikt in opdrachtgeschiedenis notatie. Bijvoorbeeld:
!3
zou de derde-laatste opdracht van uw commando geschiedenis uitvoeren(indien beschikbaar). &
&
wordt gebruikt om een job in de achtergrond te draaien. Bijvoorbeeld:f77 program.f &
, compileert en linkt het FORTRAN programmaprogram.f
in de achtergrond.&&
is de logische operator for AND in een programmeertaal context.|
- (Pipe) Geeft het resultaat van een commando als invoer voor een ander commando. Bijvoorbeeld:
ls -al |more
stuurt de directory listing uitkomst vanls
door als invoer voor het scroll commandomore
. <
- Leidt de invoer van een commando. Bijvoorbeeld:
maple < algebra
, stuurt het bestandalgebra
als invoer naar het programmamaple
. >
- Leidt de output van een commando. Bijvoorbeeld:
ls > dir_list
stuurt het resultaat vanls
naar het bestanddir_list
. ;
- Gebruikt voor afzonderlijke commando’s op dezelfde lijn. Bijvoorbeeld:
ls -l | more; quota
toont de bestandenlijst voluit en toont daarna de gebruikte quota. (
- Gebruikt als haakjes in een programmeertaal context. Bijvoorbeeld (in C shell):
if ($string=='Jane') then ...
\
- Om een van de bovenstaande karakters te gebruiken in hun letterlijke zin, moeten ze worden ‘ontsnapt’ door voorafgaand een backslash, (
\
) te plaatsen. Bijvoorbeeld: Om de string<*Hello*>
te tonen, moet:echo\<\*Hello\*\>
worden gebruikt.