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,embarasedenz. x.*y- iedere
xgevolgd doorymet 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??.datlaat alle bestanden zien die beginnen metjun, eindigen met.datmet twee willekeurige karakters daartussen. [- Wordt gebruikt om precies aangeven welke tekens de wildcard bevat. Bijvoorbeeld, het commando
rm prog[2-4p-r].cverwijdert de bestandenprog2.c,prog3.c,prog4.c,progp.c,progq.c,progr.c. ~- Gebruikt voor het volledige padnaam van een home directory. Bijvoorbeeld:
ls ~marytoont 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}.cverwijdert de bestandenprog1.c,testing.cenyesterday.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 $PRINTERtoont de huidige waarde van de omgevingsvariabelePRINTER !- Wordt gebruikt in opdrachtgeschiedenis notatie. Bijvoorbeeld:
!3zou 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.fin 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 |morestuurt de directory listing uitkomst vanlsdoor als invoer voor het scroll commandomore. <- Leidt de invoer van een commando. Bijvoorbeeld:
maple < algebra, stuurt het bestandalgebraals invoer naar het programmamaple. >- Leidt de output van een commando. Bijvoorbeeld:
ls > dir_liststuurt het resultaat vanlsnaar het bestanddir_list. ;- Gebruikt voor afzonderlijke commando’s op dezelfde lijn. Bijvoorbeeld:
ls -l | more; quotatoont 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.