Bash:
Bruke regulære uttrykk
Hvordan:
Grunnleggende Mønstersammenligning
For å finne ut om en streng matcher et mønster, kan du bruke grep
, et kommandolinjeverktøy for å søke i datasett med ren tekst etter linjer som matcher et regulært uttrykk:
echo "Hei, Verden!" | grep -o "Verden"
# Utdata: Verden
Ekstrahering av Spesifikk Data
For å trekke ut deler av data som matcher dine regex-mønstre, kan du bruke -o
med grep
:
echo "Feil: Fil ikke funnet" | grep -oE "[A-Za-z]+:"
# Utdata: Feil:
Bruk av Regex med sed
sed
(stream editor) er et kraftig verktøy for parsing og transformering av tekst. Her er hvordan du bruker sed
med regex for å erstatte tekst:
echo "Bash er flott" | sed -e 's/flott/fantastisk/'
# Utdata: Bash er fantastisk
Mønstersammenligning i Betingede Uttalelser
Bash støtter også regex direkte i betingede uttalelser:
[[ "https://eksempel.com" =~ ^https?:// ]] && echo "URL er gyldig" || echo "URL er ugyldig"
# Utdata: URL er gyldig
Avansert Mønstersammenligning og Manipulering med awk
awk
er et annet tekstbehandlingsverktøy som støtter mer kompleks dataekstraksjon og manipulering. Det kan være nyttig når man jobber med strukturerte tekstdata, som CSV:
echo -e "ID,Navn,Alder\n1,John,22\n2,Jane,24" | awk -F, '$3 > 22 {print $2 " er eldre enn 22."}'
# Utdata: Jane er eldre enn 22.
Selv om Bashs innebygde regex-funksjonaliteter dekker mange brukstilfeller, for veldig avanserte regex-operasjoner, kan du vurdere å bruke en kombinasjon av Bash-script med perl
eller python
-script, ettersom disse språkene tilbyr kraftige regex-biblioteker (f.eks. re
i Python). Et enkelt eksempel med Python:
echo "Fang dette 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# Utdata: 123
Å inkludere disse programmeringsspråkene ved behov kan hjelpe deg med å utnytte hele kraften til regex i dine Bash-script.