Mestring av Linux-kommandolinjen og Bash-skripting · leksjon

Kombinere regex med sed/awk

Integrer regulære uttrykk i «sed»- og «awk»-kommandoer for avansert tekstfiltrering, erstatning og datauttrekking.

Leksjon 3 av 411 trinn

Kombinere regex med sed/awk er en gratis leksjon i Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Mestring av Linux-kommandolinjen og Bash-skripting, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.

Regulære uttrykk med sed og awk

Velkommen til den siste leksjonen om regulære uttrykk! Vi har lært hvor kraftige regulære uttrykk er for mønstergjenkjenning.

Nå skal vi kombinere denne kraften med to viktige Linux-verktøy: sed (strømredigerer) og awk (språk for mønstergjenkjenning og behandling). Denne kombinasjonen gjør det mulig å utføre svært avansert tekstfiltrering, erstatning og datauttrekking.

sed: Filtrering med regulære uttrykk

sed kan bruke regulære uttrykk til å filtrere linjer. Adressen /pattern/ lar sed bare bruke kommandoer på linjer som samsvarer med det angitte regulære uttrykket.

Alternativet -n undertrykker standardutdata, mens p skriver ut samsvarende linjer eksplisitt.

echo -e "apple
banana
orange" | sed -n '/an/p'

sed: Erstatning med regulære uttrykk

Kommandoen s/regex/replacement/ i sed viser virkelig styrken til regulære uttrykk ved teksttransformasjon. De kan erstatte mønstre som finnes med det regulære uttrykket, med ny tekst.

Flagget g erstatter alle forekomster på en linje, mens i gjør samsvaret uavhengig av store og små bokstaver.

echo "Hello world, hello universe" | sed 's/hello/hi/gi'

sed: Fangstgrupper og tilbakesreferanser

Med regulære uttrykk kan De definere fangstgrupper ved hjelp av parenteser (). Deretter kan De referere til teksten som disse gruppene samsvarer med, i erstatningsstrengen ved hjelp av tilbakesreferanser som \1, \2 og så videre.

Bruk -E med sed for syntaks med utvidede regulære uttrykk, for eksempel for å bruke () uten escaping.

echo "Doe, John" | sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2 \1/'

awk: Filtrere poster med regulære uttrykk

awk bruker regulære uttrykk til å velge poster (linjer) før handlinger utføres. Hvis et mønster oppgis før en handlingsblokk {...}, kjøres handlingen bare for linjer som samsvarer med mønsteret.

Dette ligner på grep, men gir mulighet for mer kompleks behandling.

echo -e "Line 1: apple
Line 2: banana
Line 3: orange" | awk '/banana/'

awk: Regulære uttrykk på bestemte felt

De kan bruke regulære uttrykk på bestemte felt i awk ved hjelp av operatorene ~ (samsvarer) og !~ (samsvarer ikke). Dette er svært kraftig for strukturerte data.

For eksempel kontrollerer $1 ~ /pattern/ om det første feltet samsvarer med det regulære uttrykket.

echo "Name: John, Age: 30
Name: Jane, Age: 25" | awk '$1 ~ /Name/ {print $2}'

awk: Trekke ut samsvar (match, substr)

awk har funksjoner som match(string, regex) for å finne plasseringen og lengden til et samsvar, og substr(string, start, length) for å trekke det ut.

Etter match() inneholder RSTART startposisjonen, mens RLENGTH inneholder lengden på samsvaret.

echo "ItemCode: ABC123 Price: 45.67" | awk '{match($0, /[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}'

awk: Erstatning på stedet (sub, gsub)

awk har også innebygde funksjoner for erstatning: sub(regex, replacement, target) for det første samsvaret og gsub(regex, replacement, target) for alle samsvar.

Hvis target utelates, brukes $0 (hele posten). De kan angi et felt, for eksempel $1.

echo "apple,banana,orange" | awk '{gsub(/a/, "X", $0); print}'

Velge mellom sed og awk

Både sed og awk kan bruke regulære uttrykk til erstatning og filtrering, men de er best på forskjellige områder:

  • sed egner seg generelt bedre til enkle transformasjoner og erstatninger linje for linje. Det er en strømredigerer.
  • awk er kraftigere for behandling av strukturerte data (felt), beregninger og mer kompleks logikk eller mønstre over flere linjer. Det er et programmeringsspråk i seg selv.

De kan ofte kobles sammen med pipes | for svært komplekse oppgaver.

Utfordring: Trekke ut og transformere

Se på følgende tekstlinje:

Order#12345: ProductX - Price $19.99

Hvilken kommando trekker riktig ut prisen (for eksempel «19.99») og endrer deretter valutasymbolet til «EUR»?

Oppsummering: Regulære uttrykk med sed og awk

De behersker nå kombinasjonen av regulære uttrykk, sed og awk!

  • sed er spesielt godt egnet til å filtrere og erstatte tekst linje for linje, ved hjelp av regulære uttrykk for kraftig mønstergjenkjenning og erstatning.
  • awk gir en mer programmatisk tilnærming og kan bruke regulære uttrykk til å filtrere poster, finne samsvar i bestemte felt og trekke ut eller endre data med funksjoner som match(), substr(), sub() og gsub().

Denne ferdigheten er avgjørende for avansert tekstbehandling og skripting i Linux.

Gratis å komme i gang

Lær deg Bash med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Kombinere regex med sed/awk» gratis?

Ja – hele teksten i «Kombinere regex med sed/awk» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Mestring av Linux-kommandolinjen og Bash-skripting-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.

Hva lærer jeg i «Kombinere regex med sed/awk»?

Integrer regulære uttrykk i «sed»- og «awk»-kommandoer for avansert tekstfiltrering, erstatning og datauttrekking. Du øver på Mestring av Linux-kommandolinjen og Bash-skripting med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Mestring av Linux-kommandolinjen og Bash-skripting?

Ingen tidligere erfaring er nødvendig. Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Kombinere regex med sed/awk»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Mestring av Linux-kommandolinjen og Bash-skripting-leksjonen?

Ja. Alle Mestring av Linux-kommandolinjen og Bash-skripting-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Introduksjon til regulære uttrykk (Regex)
  2. Avansert grep med regulære uttrykk
  3. Kombinere regex med sed/awk
  4. Fangstgrupper, bakreferanser og substitusjon
← Tilbake til Mestring av Linux-kommandolinjen og Bash-skripting