Met Terminal: reguliere expressies gebruiken

Een van de dingen die ik altijd leuk vond aan de Linux-terminal, is wat je kunt bereiken met reguliere expressies. Of we nu ingewikkelde tekst moeten vinden of deze door iets anders moeten vervangen, het gebruik van reguliere expressies kan de taak enorm vereenvoudigen. Laten we bij het begin beginnen:

WAARSCHUWING: dit bericht is lastig. Als je dit bericht de hele tijd leest, kan dit bewustzijnsverlies veroorzaken. Neem tussendoor pauzes of vraag uw arts of apotheker voordat u het hele bericht leest.

Wat is een reguliere expressie?

Een reguliere expressie is een reeks speciale tekens waarmee we een tekst kunnen beschrijven die we willen vinden. Als we bijvoorbeeld naar het woord "linux" zouden willen zoeken, zou het voldoende zijn om dat woord in het programma dat we gebruiken te plaatsen. Het woord zelf is een reguliere uitdrukking. Tot dusver lijkt het heel eenvoudig, maar wat als we alle nummers in een bepaald bestand willen vinden? Of alle regels die met een hoofdletter beginnen? In die gevallen kun je geen simpel woord meer uitdrukken. De oplossing is om een ​​reguliere expressie te gebruiken.

Reguliere expressies versus bestandspatronen.

Voordat we ingaan op reguliere expressies, wil ik een veelvoorkomend misverstand over reguliere expressies uit de weg ruimen. Een reguliere expressie is niet wat we als parameter in commando's zoals rm, cp, etc. plaatsen om naar verschillende bestanden op de harde schijf te verwijzen. Dat zou een bestandspatroon zijn. Hoewel reguliere expressies vergelijkbaar zijn omdat ze enkele algemene tekens gebruiken, zijn ze verschillend. Een bestandspatroon wordt geactiveerd tegen de bestanden op de harde schijf en retourneert degene die volledig overeenkomen met het patroon, terwijl een reguliere expressie wordt geactiveerd tegen een tekst en de regels retourneert die de gezochte tekst bevatten. Bijvoorbeeld de reguliere expressie die overeenkomt met het patroon *.* het zou zoiets zijn ^.*\..*$

Soorten reguliere expressies.

Niet alle programma's gebruiken dezelfde reguliere expressies. Niet veel minder. Er zijn verschillende min of meer standaardtypes van reguliere expressies, maar er zijn programma's die de syntaxis ietwat wijzigen, hun eigen extensies opnemen of zelfs volledig verschillende karakters gebruiken. Daarom, als u reguliere expressies wilt gebruiken met een programma dat u niet goed kent, is het eerste wat u moet doen de handleiding of documentatie van het programma bekijken om te zien hoe de reguliere expressies die het herkent eruitzien.

Ten eerste zijn er twee hoofdtypen reguliere expressies, die zijn opgenomen in de POSIX-standaard, wat Linux-tools gebruiken. Het zijn de basis- en uitgebreide reguliere expressies. Bij veel van de opdrachten die werken met reguliere expressies, zoals grep of sed, kunt u beide typen gebruiken. Ik zal er hieronder over praten. Er zijn ook reguliere expressies in PERL-stijl, en dan zijn er programma's zoals vim of emacs die varianten hiervan gebruiken. Afhankelijk van wat we willen doen, kan het geschikter zijn om het een of het ander te gebruiken.

Reguliere expressies testen.

De syntaxis van reguliere expressies is niet triviaal. Als we een ingewikkelde reguliere expressie moeten schrijven, staan ​​we voor een reeks speciale tekens die op het eerste gezicht niet te begrijpen zijn, dus om te leren hoe we ze moeten gebruiken, is het essentieel om een ​​manier te hebben om alle gewenste tests uit te voeren en de resultaten gemakkelijk te zien. Daarom ga ik nu verschillende commando's plaatsen waarmee we de tests kunnen doen en alles wat we nodig hebben kunnen experimenteren totdat we de reguliere expressies hebben gedomineerd.

De eerste is het grep-commando. Dit is de opdracht die we het meest zullen gebruiken om zoekopdrachten uit te voeren. De syntaxis is als volgt:

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

Ik raad aan om reguliere expressies altijd tussen enkele aanhalingstekens te plaatsen, zodat de shell er niet aan toe komt. De eerste manier is om een ​​reguliere expressie in een bestand te vinden. De tweede maakt het mogelijk om de uitvoer van een commando te filteren via een reguliere expressie. Grep gebruikt standaard reguliere reguliere expressies. De -E optie is voor het gebruik van uitgebreide reguliere expressies.

Een truc die ons kan helpen te zien hoe reguliere expressies werken, is om het gebruik van kleur in het grep-commando mogelijk te maken. Op die manier wordt het gedeelte van de tekst dat overeenkomt met de reguliere expressie die we gebruiken, gemarkeerd. Om de kleur in het grep-commando te activeren, moet u ervoor zorgen dat de omgevingsvariabele GREP_OPTIONS bevatten in waarde --color, wat kan worden gedaan met dit commando:

GREP_OPTIONS=--color

We kunnen het in de .bashrc plaatsen om het altijd geactiveerd te hebben.

Een andere manier om reguliere expressies te gebruiken, is door de opdracht sed te gebruiken. Dit is meer geschikt om tekst te vervangen, maar kan ook worden gebruikt om te zoeken. De syntaxis ervoor zou als volgt zijn:

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

Het sed commando gebruikt standaard ook standaard reguliere expressies, je kunt uitgebreide reguliere expressies gebruiken met de -r optie.

Een ander commando dat ik ook wil noemen, is awk. Deze opdracht kan voor veel dingen worden gebruikt, omdat u hiermee scripts in uw eigen programmeertaal kunt schrijven. Als we willen zoeken naar een reguliere expressie in een bestand of in de uitvoer van een commando, is de manier om het te gebruiken als volgt:

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

Dit commando gebruikt altijd uitgebreide reguliere expressies.

Om onze tests te doen, hebben we ook een tekst nodig die als voorbeeld dient om erin te zoeken. We kunnen de volgende tekst gebruiken:

- 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.

Dit is de tekst die ik zal gebruiken voor de voorbeelden in de rest van het bericht, dus ik raad je aan om het naar een bestand te kopiëren om het bij de hand te hebben vanaf de terminal. U kunt de gewenste naam invoeren. Ik heb het regex genoemd.

Beginnende les.

Nu hebben we alles wat we nodig hebben om reguliere expressies te testen. Laten we beetje bij beetje gaan. Ik ga een aantal voorbeelden geven van zoekopdrachten met reguliere expressies waarin ik zal uitleggen waar elk teken voor is. Het zijn geen erg goede voorbeelden, maar aangezien ik een erg lange post ga hebben, wil ik het niet meer ingewikkeld maken. En ik ga even aan de oppervlakte komen van wat er kan worden gedaan met reguliere expressies.

Het eenvoudigste is om naar een specifiek woord te zoeken, stel dat we willen zoeken naar alle regels die het woord "Linux" bevatten. Dit is het gemakkelijkst, aangezien we alleen hoeven te schrijven:

grep 'Linux' regex

En we kunnen het resultaat zien:

boogLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 Vanaf Linux Regel.

Dit zijn de drie regels die het woord "Linux" bevatten die, als we de kleurentruc hebben gebruikt, gemarkeerd zullen verschijnen. Merk op dat het het woord dat we zoeken herkent zelfs als het deel uitmaakt van een langer woord zoals in "ArchLinux". Het markeert echter niet het woord "linux" dat voorkomt in de URL "https://wiki.archlinux.org/". Dat komt omdat het daar verschijnt met de kleine "l" en we hebben ernaar gezocht in hoofdletters. Het grep-commando heeft hiervoor opties, maar ik ga er niet over praten in een artikel over reguliere expressies.

Met deze eenvoudige test kunnen we de eerste conclusie trekken:

  • Een normaal teken dat in een reguliere expressie wordt geplaatst, komt overeen met zichzelf.

Dat wil zeggen dat als je de letter "a" invoert, deze de letter "a" zoekt. Het lijkt logisch, toch? 🙂

Stel nu dat we willen zoeken naar het woord "CentO" gevolgd door een willekeurig teken, maar slechts één teken. Hiervoor kunnen we het "." -Teken gebruiken, wat een jokerteken is dat overeenkomt met elk willekeurig teken, maar slechts één:

grep 'CentO.' regex

En het resultaat is:

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

Wat betekent dat het de "S" in "CentOS" bevat, hoewel het in het ene geval hoofdletters is en in het andere kleine letters. Als er een ander personage op die plaats zou verschijnen, zou het dat ook bevatten. We hebben al de tweede regel:

  • Het personage "." komt overeen met elk teken.

Het is niet meer zo triviaal als het leek, maar hiermee kunnen we niet veel doen. Laten we nog wat verder gaan. Stel dat we de regels willen vinden waarin het jaar 2002 en 2004 voorkomen. Het lijken twee zoekopdrachten, maar ze kunnen als volgt tegelijk worden uitgevoerd:

grep '200[24]' regex

Wat betekent dat we het getal 200 willen vinden gevolgd door 2 of 4. En het resultaat is dit:

Boog Linux: 11-03-2002
Gentoo: 31/03 /2002
CentO's: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Dat brengt ons bij de derde regel:

  • Meerdere tekens tussen haakjes komen overeen met elk van de tekens tussen de haakjes.

De beugels geven meer speling. ze kunnen ook worden gebruikt om tekens uit te sluiten. Stel dat we willen zoeken naar sites waar het teken ":" voorkomt, maar niet wordt gevolgd door "/". Het commando zou als volgt zijn:

grep ':[^/]' regex

Het is gewoon een kwestie van een "^" als eerste teken tussen de haakjes plaatsen. U kunt alle gewenste karakters hieronder plaatsen. Het resultaat van deze laatste opdracht is het volgende:

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 zijn de ":" achter de distro-namen gemarkeerd, maar niet die in de URL's omdat de URL's een "/" achter zich hebben.

  • Als u het teken "^" aan het begin van een haakje plaatst, komt dit overeen met elk willekeurig teken behalve de andere tekens in de vierkante haak.

Een ander ding dat we kunnen doen, is een reeks tekens specificeren. Als u bijvoorbeeld wilt zoeken naar een nummer gevolgd door een "-", ziet het er als volgt uit:

grep '[0-9]-' regex

Hiermee specificeren we een teken tussen 0 en 9 en vervolgens een minteken. Laten we eens kijken naar het resultaat:

Boog Linux: 11-03-CentOs van 2002: 14-05-2004 03: 32: 38

Er kunnen meerdere bereiken worden opgegeven tussen de haakjes om zelfs bereiken met enkele tekens te combineren.

  • Het plaatsen van twee karakters gescheiden door "-" tussen de haakjes komt overeen met elk karakter binnen het bereik.

Laten we nu kijken of we het eerste deel van de URL's kunnen selecteren. Degene die "http" of "https" zegt. Ze verschillen alleen in de laatste "s", dus laten we het als volgt doen:

grep -E 'https?' regex

Het vraagteken wordt gebruikt om het karakter links ervan optioneel te maken. Maar nu hebben we de optie -E aan het commando toegevoegd. Dit komt doordat ondervraging een kenmerk is van uitgebreide reguliere expressies. Tot nu toe gebruikten we standaard reguliere expressies, dus het was niet nodig om iets te zetten. Laten we eens kijken naar het resultaat:

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/

We hebben dus al een nieuwe regel:

  • Een karakter gevolgd door "?" komt overeen met dat karakter of geen. Dit is alleen geldig voor uitgebreide reguliere expressies.

Nu gaan we twee totaal verschillende woorden vinden. Laten we eens kijken hoe we de regels kunnen vinden die zowel het woord "Debian" als "Ubuntu" bevatten.

grep -E 'Debian|Ubuntu' regex

Met de verticale balk kunnen we twee of meer verschillende reguliere expressies scheiden en zoeken naar de regels die met een van deze overeenkomen:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Het karakter «|» dient om verschillende reguliere expressies en overeenkomsten met elk ervan te scheiden. Het is ook specifiek voor uitgebreide reguliere expressies.

Laten we doorgaan. Nu gaan we op zoek naar het woord "Linux", maar alleen daar waar het niet aan een ander woord aan de linkerkant vastzit. We kunnen het als volgt doen:

grep '\

Hier is het belangrijke karakter "<", maar het moet worden ontsnapt door er "\" voor te plaatsen zodat grep het interpreteert als een speciaal karakter. Het resultaat is als volgt:

boog Linux: 11-03-2002 Vanaf Linux Regel.

U kunt ook "\>" gebruiken om naar woorden te zoeken die niet direct naast elkaar staan. Laten we met een voorbeeld gaan. Laten we deze opdracht proberen:

grep 'http\>' regex

Het resultaat dat het produceert is dit:

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

"Http" kwam uit, maar niet "https", omdat er in "https" nog steeds een teken rechts van de "p" staat dat deel kan uitmaken van een woord.

  • De tekens "<" en ">" komen respectievelijk overeen met het begin en het einde van een woord. Deze tekens moeten worden ontsnapt, zodat ze niet als letterlijke tekens worden geïnterpreteerd.

We gaan met dingen een beetje ingewikkelder. Het teken "+" komt overeen met het teken aan de linkerkant, minstens één keer herhaald. Dit teken is alleen beschikbaar met uitgebreide reguliere expressies. Hiermee kunnen we bijvoorbeeld zoeken naar reeksen van meerdere getallen in een rij die beginnen met ":".

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

resultaat:

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

Het getal 38 is ook gemarkeerd omdat het ook begint met ":".

  • Het teken "+" komt overeen met het teken aan de linkerkant, minstens één keer herhaald.

U kunt het aantal herhalingen ook regelen met "{" en "}". Het idee is om een ​​getal tussen accolades te plaatsen dat het exacte aantal herhalingen aangeeft dat we willen. U kunt ook een reeks plaatsen. Laten we eens kijken naar voorbeelden van de twee gevallen.

Eerst gaan we alle viercijferige reeksen vinden die er zijn:

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

Merk op dat de accolades moeten worden ontsnapt als we reguliere reguliere expressies gebruiken, maar niet als we uitgebreide expressies gebruiken. Met uitgebreid zou het zo zijn:

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

En het resultaat zou in beide gevallen dit zijn:

Boog Linux: 11-03-2002
Gentoo: 31/03 /2002
CentO's: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • De tekens "{" en "}" met een nummer ertussen komen overeen met het vorige teken dat het opgegeven aantal keren is herhaald.

Nu het andere voorbeeld met de beugels. Stel dat we woorden willen zoeken met tussen de 3 en 6 kleine letters. We kunnen het volgende doen:

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

En het resultaat zou dit zijn:

- Lista de paginas wiki: NAARRCHLinux: https: //wiki.archlinux.org/ Gento: https: //wiki.gentoo.org/wiki/Main_Pleeftijd
CentOS: http: //wiki.CentOS.org/ Debisch: https: //wiki.debian.org/ OFdoodlopend: https: //wiki.ubuntu.com/ - F.jij mist de lancering: NAARRCH Linux: 11-03-2002 G.ento: 31/03/2002 CentOs: 14-05-2004 03:32:38
Debisch: 16-08-1993 Udoodlopend: 20/10/2004 D.Het is Linux Ruez.

Wat, zoals je kunt zien, niet veel lijkt op wat we wilden. Dat komt omdat de reguliere expressie de letters zoekt in andere woorden die langer zijn. Laten we deze andere versie proberen:

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

resultaat:

- Lijst met pagina's 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/

Dit lijkt al meer op wat we wilden. Wat we hebben gedaan, is eisen dat het woord begint net voor de eerste letter en eindigt net na de laatste.

  • De tekens "{" en "}" met twee cijfers ertussen gescheiden door een komma komen overeen met het vorige teken dat het aantal keren is herhaald dat is aangegeven door de twee cijfers.

Laten we nu eens kijken naar een personage dat een priemgetal is van "+". Het is "*" en zijn werking lijkt erg op elkaar, alleen dat het overeenkomt met een willekeurig aantal tekens, inclusief nul. Dat wil zeggen, het doet hetzelfde als de "+" maar vereist niet dat het teken links ervan in de tekst verschijnt. Laten we bijvoorbeeld zoeken naar die adressen die beginnen op wiki en eindigen op org:

grep 'wiki.*org' regex

Laten we eens kijken naar het resultaat:

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

Perfect.

Nu het laatste personage dat we gaan zien. Het teken "\" wordt gebruikt om aan het teken rechts daarvan te ontsnappen, zodat het zijn speciale betekenis verliest. Bijvoorbeeld: stel dat we de lijnen willen lokaliseren die eindigen op een punt. Het eerste dat bij ons kan opkomen, zou dit kunnen zijn:

grep '.$' regex

Het resultaat is niet wat we zoeken:

- Lijst met wikipagina's:
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/
- Releasedata: 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 Regel.

Dit komt omdat de "." het komt overal overeen, zodat reguliere expressie overeenkomt met het laatste teken van elke regel, wat het ook is. De oplossing is deze:

grep '\.$' regex

Nu is het resultaat wat we willen:

Desde Linux Regel.

Spel is over

Hoewel het onderwerp van reguliere expressies zo complex is dat ik het voor een serie artikelen zou geven, denk ik dat ik je al genoeg pijn heb gedaan. Als je bent aangekomen, gefeliciteerd. En als je dit allemaal in één keer hebt gelezen, neem dan een aspirientje of zoiets, want het kan niet goed zijn.

Voorlopig is dat alles. Als je dit artikel leuk vindt, kun je misschien een ander schrijven. In de tussentijd raad ik je aan om alle reguliere expressies in de terminal uit te proberen om duidelijk te zien hoe ze werken. En onthoud: alleen Chuck Norris kan HTML parseren met behulp van reguliere expressies.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Ezechiël zei

    Wat zou ons leven zijn zonder de regex?
    Het artikel is erg handig, maar ik zal het beetje bij beetje lezen. Heel erg bedankt.

    1.    hexaborg zei

      Bedankt voor je reactie. Ik geloof nog steeds niet dat mijn artikel is uitgekomen. 🙂 Er is een fout opgetreden, maar ik hoop dat het nuttig is. 🙂

  2.   Scalibur zei

    Dankjewelssssssss! ..

    Enige tijd geleden moest ik een beetje studeren over reguliere expressies .. ..Ik dank u voor het lesgeven .. en de stap-voor-stap handleiding om ze allemaal te leren ..

    Heel goed! .. .. Ik ga die aspirine halen .. ee

    1.    hexaborg zei

      Graag gedaan. Moed en dat reguliere expressies niet bij jou kunnen. 🙂

  3.   tanrax zei

    Fantastische post! Goed werk. Ik vraag me af hoeveel uur het je kostte 😀

    1.    hexaborg zei

      LOL!! De vraag is: hoeveel uur zou het me gekost hebben als ik alles had gezegd wat ik van plan was te zeggen? Eindeloos !! 🙂

  4.   tammu zei

    een ding wist ik niet, goed artikel!

    1.    hexaborg zei

      Dank je. Het is een genoegen om het met u te delen.

  5.   helena_ryuu zei

    geweldige uitleg. gefeliciteerd! erg handig!

    1.    hexaborg zei

      Ik ben blij dat je het nuttig vond. Het is dus een plezier om te schrijven

  6.   anti zei

    Dit zou ergens speciaal moeten gaan. Net als de Featured maar die een heel specifiek nut hebben. Heel handig, hoewel ik het graag op Vim zou willen zien.

    1.    hexaborg zei

      Dat is een kwestie van mezelf afvragen. Ik heb nog een paar artikelen over reguliere expressies in gedachten. En ik zou over vim in hen kunnen praten. Het heeft enkele verschillen met wat ik in dit artikel heb uitgelegd. Het is een kwestie van ermee doorgaan. 🙂

  7.   Fernando zei

    Goed!

    Je artikel is erg goed, het is merkwaardig, onlangs (nu) heb ik op mijn website een artikel gepubliceerd dat ik al een paar dagen aan het voorbereiden was, waarin ik een lijst met metatekens voor reguliere expressies en enkele voorbeelden heb verzameld. En het was eerlijk om binnen te komen DesdeLinux en zie een bericht over hetzelfde onderwerp!

    Als het enige troost is, de mijne is VEEL MEER KUT 😀

    Regex is zeker een van de handigste dingen, ik gebruik ze normaal gesproken om de uitvoer van de opdrachten bij te snijden en het deel te behouden dat me interesseert, en er vervolgens mee te communiceren in een bash-script, bijvoorbeeld. Ik heb ze ook veel gebruikt op de universiteit, en ze zijn van vitaal belang bij de constructie van compilers (in de definitie van lexicografisch en parsers). Kortom, een hele wereld.

    Groeten en heel erg goed werk.

    1.    hexaborg zei

      Heel hartelijk bedankt.

      Ik vond je artikel ook leuk. Het is beknopter dan het mijne. Het kan dienen als een snelle referentie. Het is toeval dat we ze tegelijkertijd hebben geschreven. Je kunt zien dat mensen geïnteresseerd zijn in het onderwerp. 🙂

  8.   Elery zei

    Reguliere expressies voor dummies =), nu is het mij duidelijker, een manier om de uitvoer met kleur voor grep te hebben, is door een alias te maken in .bashrc alias grep = 'grep –color = always', voor het geval dat het werkt voor iemand.

    groeten

    1.    hexaborg zei

      Klopt. Dat is een andere manier om het te doen. Bedankt voor de input. 🙂

  9.   KZKG ^ Gaara zei

    O_O… stukje bijdrage !!! O_O ...
    Heel erg bedankt voor de post, ik wachtte al een tijdje op zoiets lol, ik laat het open om het thuis rustig te lezen zonder gedoe om me te concentreren lol.

    Bedankt voor het artikel, echt waar 😀

    1.    hexaborg zei

      Ik wist dat je het leuk zou vinden. LOL!! De waarheid is dat er veel dingen ontbreken, maar ik heb al een tweede deel in gedachten. 🙂

  10.   Eliecer Tates zei

    Geweldig artikel, als ik het gisteren maar had gelezen, zou de les die ik vandaag gaf nog gemakkelijker zijn geweest voor mijn studenten!

    1.    hexaborg zei

      LOL!! Jammer dat ik te laat was, maar blij dat het nuttig is. 🙂

  11.   LeoToro zei

    Eindelijk !!!, super goed de post…. Eindelijk heb ik iets gevonden dat de reguliere expressies duidelijk verklaart… ..

    1.    hexaborg zei

      Er is veel informatie beschikbaar, maar het is moeilijker om iets te vinden dat gemakkelijk te begrijpen is. Ik ben blij dat ik dat gat heb opgevuld. 🙂

      Groeten.

  12.   Shakespeare Rhodes zei

    Hé, ik heb hulp nodig, ik moet een zoekopdracht uitvoeren in / var / logs met het formaat: jjmmdd, en de logboeken komen als 130901.log -130901.log, ik moet zoeken naar al diegenen die tussen 1 september en 11 oktober zijn, Het enige dat ik kon doen, was heel september verwijderen, maar ik weet niet hoe ik de volledige keten moet doen:

    ex: 1309 [0-3] geeft me de logboeken terug tussen 1 september en 30 september, maar ik weet niet hoe ik van 1 tot 11 oktober ook in dezelfde keten moet komen.

    1.    hexaborg zei

      Het is een beetje ingewikkeld om het met reguliere expressies te doen. Het komt bij me op dat zoiets als dit zou kunnen werken:

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

      Het is een uitgebreide reguliere expressie. U zegt niet welke tool u gebruikt, dus ik kan u niet meer details geven.

      Hoe dan ook, ik denk dat dit het geval is in plaats van reguliere expressies te gebruiken, het is beter om het met find te doen. U kunt zoiets als dit proberen:

      vind. -newermt '01 sep '-a! -newermt '11 okt '-afdruk

      Geluk. Ik hoop dat dit je kan helpen.

  13.   chipo zei

    Hallo! Allereerst wil ik je bedanken voor je werk, aangezien deze pagina in mijn "top 3" van de beste Linux-sites staat.
    Ik was aan het oefenen en wist niet waarom een ​​RegExp op een telefoonnummer niet voor mij werkte en het was dat ik de «-E» miste (wat ik dankzij deze post realiseerde).
    Ik wilde je vragen of je geen goede pdf of site kent met oefeningen op RegExp, hoewel je met een beetje fantasie kunt oefenen om ze zelf uit te vinden.

    Gegroet, Pablo.

  14.   cally zei

    Heel goed, ik heb het net allemaal gelezen, en ja, nu heb ik een aspirientje nodig 🙂

  15.   Oscar zei

    De beste uitleg die ik heb gezien van reguliere expressies. Mijn dank aan de auteur voor het delen van dit werk.

    Een groet.

  16.   Alexander zei

    Ik hield echt van een hele goede uitleg