Med Terminal: Brug af regulære udtryk

En af de ting, jeg altid har elsket ved Linux-terminalen, er, hvad du kan opnå ved at bruge regulære udtryk. Uanset om vi skal søge efter kompliceret tekst eller erstatte den med noget andet, kan brugen af ​​regulære udtryk i høj grad forenkle arbejdet. Lad os starte med begyndelsen:

ADVARSEL: Dette indlæg er en smerte i røven. At læse dette indlæg hele tiden kan forårsage tab af bevidsthed. Hold pauser ind imellem eller konsulter din læge eller apotek, før du læser hele indlægget.

Hvad er et regulært udtryk?

Et regulært udtryk er en række specialtegn, der giver os mulighed for at beskrive en tekst, som vi vil finde. For eksempel, hvis vi ønskede at søge efter ordet "linux", ville det være nok at sætte dette ord i det program, vi bruger. Selve ordet er et regelmæssigt udtryk. Indtil videre virker det meget simpelt, men hvad hvis vi vil finde alle numrene i en bestemt fil? Eller alle de linjer, der starter med et stort bogstav? I disse tilfælde kan du ikke længere sætte et enkelt ord. Løsningen er at bruge et regulært udtryk.

Regulære udtryk i forhold til filmønstre.

Inden vi kommer ind på emnet regulære udtryk, vil jeg fjerne en almindelig misforståelse om regulære udtryk. Et regulært udtryk er ikke det, vi sætter som parameter i kommandoer som rm, cp osv. For at henvise til forskellige filer på harddisken. Det ville være et filmønster. Regulære udtryk, selvom de ligner, fordi de bruger nogle almindelige tegn, er forskellige. Et filmønster affyres mod filerne på harddisken og returnerer dem, der matcher mønsteret, mens et regulært udtryk affyres mod en tekst og returnerer de linjer, der indeholder den søgte tekst. For eksempel det regulære udtryk, der svarer til mønsteret *.* det ville være noget lignende ^.*\..*$

Typer af regulære udtryk.

Ikke alle programmer bruger de samme regulære udtryk. Ikke meget mindre. Der er flere mere eller mindre standardtyper af regulære udtryk, men der er programmer, der ændrer syntaksen lidt, inkluderer deres egne udvidelser eller endda bruger helt forskellige tegn. Derfor, når du vil bruge regulære udtryk med et program, som du ikke kender godt, er den første ting at gøre at se i manualen eller dokumentationen til programmet for at se, hvordan de regulære udtryk, den genkender, er.

For det første er der to hovedtyper af regulære udtryk, som er indeholdt i POSIX-standarden, hvilket er hvad Linux-værktøjer bruger. De er de grundlæggende og udvidede regulære udtryk. Mange af kommandoerne, der arbejder med regulære udtryk, såsom grep eller sed, giver dig mulighed for at bruge disse to typer. Jeg vil tale om dem nedenfor. Der er også PERL-stil regulære udtryk, og så er der programmer som vim eller emacs, der bruger varianter af disse. Afhængigt af hvad vi vil gøre, kan det være mere passende at bruge det ene eller det andet.

Test af regulære udtryk.

Syntaksen for regulære udtryk er slet ikke triviel. Når vi skal skrive et kompliceret regulært udtryk, vil vi stå foran en række specialtegn, der er umulige at forstå ved første øjekast, så for at lære at bruge dem er det vigtigt at have en måde at udføre alle de tests, vi ønsker og ser resultaterne let. Derfor vil jeg nu sætte flere kommandoer, som vi kan udføre testene og eksperimentere med alt, hvad vi har brug for, indtil vi har de regulære udtryk domineret.

Den første af disse er grep-kommandoen. Dette er den kommando, vi oftest vil bruge til at søge. Syntaksen er som følger:

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

Jeg anbefaler altid at sætte regulære udtryk i enkelte anførselstegn, så skallen ikke gør det for os. Den første måde er at søge efter et regulært udtryk i en fil. Den anden giver dig mulighed for at filtrere outputtet af en kommando gennem et regulært udtryk. Som standard bruger grep grundlæggende regulære udtryk. Indstillingen -E er til at bruge udvidede regulære udtryk.

Et trick, der kan hjælpe os med at se, hvordan regulære udtryk fungerer, er at aktivere brugen af ​​farve i grep-kommandoen. På denne måde vil den del af teksten, der matcher det regulære udtryk, vi bruger, blive fremhævet. For at aktivere farven i grep-kommandoen skal du bare sørge for, at miljøvariablen GREP_OPTIONS indeholder i værdi --color, som kan gøres med denne kommando:

GREP_OPTIONS=--color

Vi kan sætte det i .bashrc for altid at have det aktiveret.

En anden måde at bruge regulære udtryk på er ved at bruge kommandoen sed. Dette er bedst egnet til at erstatte tekst, men kan også bruges til søgning. Syntaksen for det ville være sådan her:

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

Kommandoen sed bruger også grundlæggende regulære udtryk som standard, udvidede regulære udtryk kan bruges med -r muligheden.

En anden kommando, jeg også vil navngive, er awk. Denne kommando kan bruges til mange ting, da den giver dig mulighed for at skrive scripts i dit eget programmeringssprog. Hvis det, vi ønsker, er at søge efter et regulært udtryk i en fil eller i outputtet af en kommando, vil måden at bruge det på være som følger:

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

Denne kommando bruger altid udvidede regulære udtryk.

For at udføre vores test skal vi også bruge en tekst, der tjener som eksempel til at søge i den. Vi kan bruge følgende tekst:

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

Det er den tekst, jeg vil bruge til eksemplerne i resten af ​​indlægget, så jeg anbefaler, at du kopierer den til en fil for at have den ved hånden fra terminalen. Du kan angive det navn, du ønsker. Jeg har kaldt det regex.

Begyndelses lektion.

Nu har vi alt, hvad vi har brug for for at teste regelmæssige udtryk. Lad os gå lidt efter lidt. Jeg vil sætte flere eksempler på søgninger med regelmæssige udtryk, hvor jeg vil forklare, hvad hver karakter er til. De er ikke særlig gode eksempler, men da jeg har et meget langt indlæg, vil jeg ikke komplicere det mere. Og jeg vil bare skrabe overfladen af, hvad der kan gøres med regelmæssige udtryk.

Det enkleste af det hele er at søge efter et bestemt ord, for eksempel, antag at vi vil søge efter alle de linjer, der indeholder ordet "Linux". Dette er det nemmeste, da vi kun skal skrive:

grep 'Linux' regex

Og vi kan se resultatet:

ArchLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 Fra Linux Rulez.

Dette er de tre linjer, der indeholder ordet "Linux", som, hvis vi har brugt farvetricket, fremhæves. Bemærk, at det genkender det ord, vi leder efter, selvom det er en del af et længere ord som i "ArchLinux". Det fremhæver dog ikke ordet "linux", der vises i webadressen "https://wiki.archlinux.org/". Det skyldes, at det vises der med små bogstaver "l", og vi har ledt efter det med store bogstaver. Grep-kommandoen har muligheder for dette, men jeg vil ikke tale om dem i en artikel om regulære udtryk.

Med denne enkle test kan vi drage den første konklusion:

  • En normal karakter sat i et regulært udtryk matcher sig selv.

Hvilket vil sige, at hvis du sætter bogstavet "a", vil det søge efter bogstavet "a". Det virker logisk, ikke? 🙂

Antag nu, at vi vil søge efter ordet "CentO" efterfulgt af et hvilket som helst tegn, men kun et enkelt tegn. Til dette kan vi bruge tegnet ".", som er et jokertegn, der matcher ethvert tegn, men kun ét:

grep 'CentO.' regex

Og resultatet er:

CentOS: http://wiki.centos.org/
CentO'er: 14-05-2004 03:32:38

Hvilket betyder, at det inkluderer "S" af "CentOS", selvom det i et tilfælde er stort og i et andet med små bogstaver. Hvis et andet tegn optræder på det sted, vil det også inkludere det. Vi har allerede den anden regel:

  • Karakteren "." matcher enhver karakter.

Det er ikke så trivielt, som det så ud til, men vi kan ikke gøre meget med det her. Lad os gå lidt længere. Lad os antage, at vi vil finde de linjer, som årstallet 2002 og 2004 optræder i. Det lyder som to søgninger, men det kan gøres på én gang sådan her:

grep '200[24]' regex

Hvilket betyder, at vi vil finde tallet 200 efterfulgt af 2 eller 4. Og resultatet er dette:

ArchLinux: 11-03-2002
Gentoo: 31/03 /2002
CentO'er: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Hvilket bringer os til den tredje regel:

  • Flere tegn i parentes matcher et hvilket som helst af tegnene inden for parenteserne.

Beslagene giver mere spil. de kan også bruges til at udelukke tegn. Antag for eksempel, at vi ønsker at søge efter websteder, hvor tegnet ":" vises, men ikke efterfølges af et "/". Kommandoen ville være sådan her:

grep ':[^/]' regex

Det er simpelthen et spørgsmål om at sætte et "^" som det første tegn inden for parentesen. Du kan sætte så mange tegn, som du vil, nedenfor. Resultatet af denne sidste kommando er følgende:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11-03-2002 Gentoo: 31/03/2002 CentOs: 14-05-2004 03:32:38 Debian: 16/08/1993 Ubuntu: 20/10/2004

Nu er ":" bag distro-navne fremhævet, men ikke dem i URL'erne, fordi URL'erne har "/" efter dem.

  • At sætte tegnet "^" i begyndelsen af ​​en firkantet parentes matcher ethvert tegn undtagen de andre tegn i den firkantede parentes.

En anden ting, vi kan gøre, er at angive en række tegn. For for eksempel at søge efter et hvilket som helst tal efterfulgt af et "-" vil det se sådan ud:

grep '[0-9]-' regex

Med dette specificerer vi et tegn mellem 0 og 9 og derefter et minustegn. Lad os se resultatet:

ArchLinux: 11-03-2002 CentOs: 14-05-2004 03: 32: 38

Flere områder kan specificeres inden for parenteserne for at jævne blandingsområder med enkelt tegn.

  • Anbringelse af to tegn adskilt af "-" inden for firkantede parenteser matcher ethvert tegn inden for området.

Lad os nu se, om vi kan vælge den første del af URL'erne. Den, der siger "http" eller "https". De adskiller sig kun i de sidste "s", så lad os gøre det sådan her:

grep -E 'https?' regex

Spørgsmålstegnet bruges til at gøre tegnet til venstre valgfrit. Men nu har vi tilføjet -E muligheden til kommandoen. Dette skyldes, at spørgsmålstegnet er et træk ved udvidede regulære udtryk. Indtil nu brugte vi grundlæggende regulære udtryk, så der var ingen grund til at sætte noget. Lad os se resultatet:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Så vi har allerede en ny regel:

  • Et tegn efterfulgt af "?" matcher denne karakter eller ingen. Dette er kun gyldigt for udvidede regulære udtryk.

Nu skal vi lede efter to helt forskellige ord. Lad os se, hvordan du søger efter linjer, der indeholder både ordet "Debian" og "Ubuntu".

grep -E 'Debian|Ubuntu' regex

Med den lodrette bjælke kan vi adskille to eller flere forskellige regulære udtryk og søge efter de linjer, der matcher en af ​​dem:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Tegnet "|" bruges til at adskille flere regulære udtryk og matcher ethvert af dem. Det er også specifikt for udvidede regulære udtryk.

Lad os fortsætte. Nu skal vi søge efter ordet "Linux", men kun hvor det ikke er knyttet til et andet ord til venstre. Vi kan gøre det sådan her:

grep '\

Det vigtige tegn her er "<", men det skal escapes ved at sætte "\" foran det, så grep fortolker det som et specialtegn. Resultatet er som følger:

Arch Linux: 11-03-2002 Fra Linux Rulez.

Du kan også bruge "\>" til at søge efter ord, der ikke er knyttet til andre til højre. Lad os gå med et eksempel. Lad os prøve denne kommando:

grep 'http\>' regex

Det output, det producerer, er dette:

CentOS: http: //wiki.centos.org/

Det returnerede "http", men ikke "https", for i "https" er der stadig et tegn til højre for "p", der kan være en del af et ord.

  • Tegnene "<" og ">" matcher henholdsvis begyndelsen og slutningen af ​​et ord. Disse tegn skal escapes, så de ikke tolkes som bogstavelige tegn.

Lad os gå med tingene lidt mere komplicerede. Tegnet "+" matcher tegnet til venstre for det gentaget mindst én gang. Dette tegn er kun tilgængeligt med udvidede regulære udtryk. Med den kan vi for eksempel søge efter sekvenser af flere tal i en række, der starter med ":".

grep -E ':[0-9]+' regex

resultat:

CentOs: 14-05-2004 03: 32: 38

Nummeret 38 er også fremhævet, fordi det også begynder med ":".

  • "+" Tegnet matcher tegnet til venstre, gentaget mindst en gang.

Du kan også styre antallet af gentagelser ved at bruge "{" og "}". Ideen er at placere et tal mellem bøjlerne, der angiver det nøjagtige antal gentagelser, vi ønsker. Du kan også sætte en rækkevidde. Lad os se eksempler på begge tilfælde.

Først skal vi finde alle de firecifrede sekvenser, der er:

grep '[0-9]\{4\}' regex

Bemærk, at du skal undslippe klammerne, hvis vi bruger grundlæggende regulære udtryk, men ikke hvis vi bruger de udvidede. Med udvidet ville det være sådan her:

grep -E '[0-9]{4}' regex

Og resultatet i begge tilfælde ville være dette:

ArchLinux: 11-03-2002
Gentoo: 31/03 /2002
CentO'er: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Tegnene "{" og "}" med et tal imellem svarer til det forrige tegn gentaget det angivne antal gange.

Nu det andet eksempel med tasterne. Antag, at vi vil finde ord, der har mellem 3 og 6 små bogstaver. Vi kunne gøre følgende:

grep '[a-z]\{3,6\}' regex

Og resultatet ville være dette:

- Lista de sides wiki: TILrchLinux: https:/ /wiki.ArchLinux.org/ Gogså: https:/ /wiki.gentoo.org/wiki/Main_Palder
CentOS: http:/ /wiki.CentOS.org/ Debian: https:/ /wiki.debian.org/ ELLERblindgyde: https:/ /wiki.ubuntu.com/ - Fdu savner de lancering: TILrch Linux: 11-03-2002 Gogså: 31/03/2002 CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993 Ublindgyde: 20/10/2004 Ddet er Linux RUlez.

Hvilket, som du kan se, ikke minder meget om det, vi ønskede. Det er fordi det regulære udtryk finder bogstaverne inde i andre ord, der er længere. Lad os prøve denne anden version:

grep '\<[a-z]\{3,6\}\>' regex

resultat:

- Liste over sider wiki: ArchLinux: https:/ /wiki.archlinux.org/ Gentoo: https:/ /wiki.gentoo.org/wiki/ Main_Page CentOS: http:/ /wiki.CentOS.org/ Debian: https:/ /wiki.debian.org/ Ubuntu: https:/ /wiki.ubuntu.com/

Dette ligner allerede det, vi ønskede. Det, vi har gjort, er at kræve, at ordet starter lige før det første bogstav og slutter lige efter det sidste bogstav.

  • Tegnene "{" og "}" med to tal mellem dem adskilt af et komma matcher det forrige tegn, gentaget det antal gange, som de to tal angiver.

Lad os nu se på et tegn, der er et primtal af "+". Det er "*", og dets funktion er meget ens, kun at det matcher et hvilket som helst antal tegn inklusive nul. Med andre ord, det gør det samme som "+", men kræver ikke, at tegnet til venstre for det vises i teksten. Lad os for eksempel prøve at lede efter de adresser, der starter med wiki og slutter med org:

grep 'wiki.*org' regex

Lad os se resultatet:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/

Perfecto.

Nu er den sidste karakter vi skal se på. Tegnet "\" bruges til at undslippe tegnet til højre, så det mister sin særlige betydning. For eksempel: Antag, at vi ønsker at lokalisere de linjer, der ender på punkt. Det første, der kunne falde os ind, kunne være dette:

grep '.$' regex

Resultatet er ikke det, vi leder efter:

- Liste over wiki-sider:
ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
- Udgivelsesdatoer: Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 20/10/2004
Desde Linux Rulez.

Dette skyldes, at tegnet "." matcher hvad som helst, så det regulære udtryk matcher det sidste tegn i hver linje, uanset hvad det er. Løsningen er denne:

grep '\.$' regex

Nu er resultatet, hvad vi vil have:

Desde Linux Rulez.

Spil over

Selvom emnet regulære udtryk er så komplekst, at det ville være nok til en række artikler, synes jeg, jeg har givet dig nok ondt. Hvis det lykkedes dig at nå dertil, tillykke. Og hvis du har læst alt dette på én gang, så tag en aspirin eller noget, for det kan ikke være godt.

For nu er det alt. Hvis denne artikel glæder, kan jeg måske skrive en anden. I mellemtiden anbefaler jeg, at du prøver alle regulære udtryk i terminalen for tydeligt at se, hvordan de virker. Og husk: kun Chuck Norris kan parse HTML ved hjælp af regulære udtryk.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Ezequiel sagde han

    Hvad ville vores liv være uden regex?
    Artiklen er meget nyttig, men jeg vil læse den lidt efter lidt. Mange tak.

    1.    hexborg sagde han

      Tak for kommentaren. Jeg tror stadig ikke på, at min artikel er kommet ud. Det er kommet ud med en vis fejl, men jeg håber, det er nyttigt. 🙂

  2.   Scalibur sagde han

    Tak youssssssss! ..

    For et stykke tid siden var jeg nødt til at studere lidt om regelmæssige udtryk .. ..Jeg tak for undervisningen .. og den trinvise guide til at lære hver enkelt af dem ..

    Meget god! .. .. Jeg får den aspirin .. ee

    1.    hexborg sagde han

      Selv tak. Mod og at faste udtryk ikke kan være med dig. 🙂

  3.   tanrax sagde han

    Fantastisk indlæg! Godt arbejde. Jeg spekulerer på, hvor mange timer det tog dig 😀

    1.    hexborg sagde han

      LOL !! Spørgsmålet er: Hvor mange timer ville det have taget mig, hvis jeg havde sagt alt, hvad jeg havde tænkt mig at sige? Uendelig !! 🙂

  4.   Tammuz sagde han

    en ting vidste jeg ikke, god artikel!

    1.    hexborg sagde han

      Tak skal du have. Det er en fornøjelse at dele det med dig.

  5.   helena_ryuu sagde han

    god forklaring. tillykke! virkelig nyttigt!

    1.    hexborg sagde han

      Jeg er glad for, at du fandt det nyttigt. Så det er en fornøjelse at skrive.

  6.   anti sagde han

    Dette skal gå et specielt sted. Ligesom den valgte men har en meget specifik nytte. Ganske nyttigt, selvom jeg gerne vil se, at det anvendes på Vim.

    1.    hexborg sagde han

      Det er et spørgsmål om at spørge mig selv. Jeg har et par flere artikler om regelmæssige udtryk i tankerne. Og jeg kunne tale om vim i dem. Det har nogle forskelle fra hvad jeg har forklaret i denne artikel. Det er et spørgsmål om at komme videre med det. 🙂

  7.   Fernando sagde han

    Godt!

    Din artikel er meget god, den er nysgerrig, for nylig (lige nu) har jeg publiceret på min hjemmeside et indlæg, som jeg havde forberedt i et par dage, hvor jeg har samlet en liste over metakarakterer til regulære udtryk og nogle eksempler. Og det har været fair at komme ind DesdeLinux og se et indlæg om samme emne!

    Hvis det er nogen trøst, er min MEGET MERE FUSY 😀

    Bestemt regex er en af ​​de mest nyttige ting, jeg bruger dem normalt til at trimme output af kommandoerne og beholde den del, der interesserer mig, og derefter interagere med det i et bash-script, for eksempel. Jeg har også brugt dem meget på universitetet, og de er af afgørende betydning i konstruktionen af ​​kompilatorer (i definitionen af ​​leksikografi og parsere). Kort sagt en hel verden.

    Hilsner og meget meget godt arbejde.

    1.    hexborg sagde han

      Mange tak.

      Jeg kunne også lide din artikel. Det er mere kortfattet end mit. Det kan tjene som en hurtig reference. Det er en tilfældighed, at vi har skrevet dem på samme tid. Du kan se, at folk er interesserede i emnet. 🙂

  8.   Elery sagde han

    Regulære udtryk for dummies =), nu er det klarere for mig, forresten er en måde at have output med farve til grep, ved at oprette et alias i .bashrc alias grep = 'grep –color = altid', i tilfælde af at det fungerer for nogen.

    hilsen

    1.    hexborg sagde han

      Rigtigt. Det er en anden måde at gøre det på. Tak for input. 🙂

  9.   KZKG ^ Gaara sagde han

    O_O ... bidragsstykke !!! O_O ...
    Mange tak for indlægget, jeg ventede på noget lignende lol, jeg lader det være åbent for at læse det roligt derhjemme uden besvær med at koncentrere lol.

    Tak for artiklen, det gør jeg virkelig 😀

    1.    hexborg sagde han

      Jeg vidste, du kunne lide det. LOL !! Sandheden er, at mange ting mangler, men jeg har allerede en anden del i tankerne. 🙂

  10.   Eliecer Tates sagde han

    Fantastisk artikel, hvis kun jeg havde læst den i går, ville den klasse, jeg gav i dag, have været endnu lettere for mine elever!

    1.    hexborg sagde han

      LOL !! Ærgerligt, jeg kom for sent, men glad for, at det er nyttigt. 🙂

  11.   LeoToro sagde han

    Endelig !!!, super godt indlægget .... Jeg fandt endelig noget, der tydeligt forklarer de regulære udtryk ... ..

    1.    hexborg sagde han

      Der er en masse information derude, men det er sværere at finde noget, der er let at forstå. Jeg er glad for, at jeg udfyldte det hul. 🙂

      Greetings.

  12.   Shakespeare Rhodes sagde han

    Hej jeg har brug for hjælp, jeg skal søge i / var / logs med formatet: yymmdd, og logfilerne kommer som 130901.log -130901.log, jeg skal søge efter alle dem, der er mellem 1. september og 11. oktober , Det eneste, jeg formåede at gøre, var at fjerne hele september, men jeg ved ikke, hvordan man laver den komplette kæde:

    ex: 1309 [0-3] returnerer logfilerne mellem 1. september og 30. september, men jeg ved ikke, hvordan man også kommer i samme kæde fra 1. til 11. oktober.

    1.    hexborg sagde han

      At gøre det ved hjælp af regulære udtryk er lidt kompliceret. Det forekommer mig, at noget som dette måske fungerer:

      13(09[0-3]|10(0|1[01]))

      Det er et udvidet regulært udtryk. Du siger ikke, hvilket værktøj du bruger, så jeg kan ikke give dig flere detaljer.

      Alligevel tror jeg, det er tilfældet i stedet for at bruge regulære udtryk, er det bedre at gøre det med find. Du kan prøve noget som dette:

      finde. -nyhed '01 sep '-a! -newermt '11 oct '-print

      Held. Håber dette kan hjælpe dig.

  13.   chipo sagde han

    Hej! Først og fremmest vil jeg gerne takke dig for dit arbejde, da denne side er inden for min "top 3" af de bedste Linux-sider.
    Jeg øvede og vidste ikke, hvorfor et RegExp på et telefonnummer ikke fungerede for mig, og det var, at jeg manglede «-E» (som jeg indså takket være dette indlæg).
    Jeg ville spørge dig, om du ikke kender en god pdf eller et sted, hvor der er øvelser på RegExp, selvom du med lidt fantasi kan øve dig på at opfinde dem selv.

    Hilsen, Pablo.

  14.   Rolig sagde han

    Meget godt, jeg har lige læst det hele, og ja nu har jeg brug for en aspirin 🙂

  15.   Oscar sagde han

    Den bedste forklaring, jeg har set på regulære udtryk. Min tak til forfatteren for at dele dette arbejde.

    En hilsen.

  16.   alexander sagde han

    Jeg kunne virkelig godt lide en meget god forklaring