Bruke regulære uttrykk

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.