Pipe-, Grep- en sorteeropdracht in Linux/Unix met voorbeelden

โšก Slimme samenvatting

De commando's pipe, grep en sort in Linux en Unix leiden tekst door elkaar en filteren deze: een pipe voert de uitvoer van het ene commando door naar het volgende, grep zoekt naar patronen en sort rangschikt regels, terwijl filters de gegevens ertussen transformeren.

  • ๐Ÿ”— Pijp: Het pipe-symbool | geeft de uitvoer van het ene commando door als invoer voor het volgende.
  • ๐Ÿ“„ oproepen: Als je `cat` doorstuurt naar `less`, `pg` of `more`, wordt een lang bestand scherm voor scherm weergegeven.
  • ๐Ÿ” greep: Het commando grep doorzoekt een bestand naar regels die overeenkomen met een tekenreeks of patroon.
  • ๏ธ grep-opties: Vlaggen zoals -v, -c, -n, -i en -l keren bestanden om, tellen ze, nummeren ze, negeren ze hoofdlettergevoeligheid en geven ze een lijst van bestanden.
  • ๐Ÿ”ค soort: Het sort-commando sorteert de regels van een bestand, met de opties -r, -n en -f voor respectievelijk omgekeerde, numerieke en hoofdletterongevoelige sortering.
  • ๐Ÿงช Filters: Filtercommando's zoals grep, sort, awk, sed en wc verwerken ingevoerde gegevens via een pijplijn en produceren uitvoer.
  • ๐Ÿค– AI-ondersteuning: AI-assistenten en GitHub Copilot kunnen pipelines voor pipe, grep en sort bouwen en uitleggen.

Pipe-, grep- en sort-commando's in Linux en Unix met voorbeelden

Pipes, grep en sort behoren tot de meest gebruikte tools op de Linux Commandoregel, omdat je hiermee kleine commando's kunt combineren tot รฉรฉn krachtige workflow. Deze pagina legt elk commando uit met uitgewerkte voorbeelden en laat vervolgens zien hoe filters ze met elkaar verbinden.

Wat is een pijp in Linux?

De pipe is een commando in Linux waarmee je twee of meer commando's kunt gebruiken, waarbij de uitvoer van het ene commando als invoer dient voor het volgende. Kort gezegd, de uitvoer van elk proces wordt direct als invoer gebruikt voor het volgende, net als in een pijplijn. Het symbool '|' duidt een pipe aan.

Met pipes kun je twee of meer commando's tegelijk combineren en achter elkaar uitvoeren. Je kunt krachtige commando's gebruiken die complexe taken razendsnel uitvoeren.

Laten we dit met een voorbeeld begrijpen.

Wanneer je het commando 'cat' gebruikt om een โ€‹โ€‹bestand te bekijken dat meerdere pagina's beslaat, springt de prompt snel naar de laatste pagina van het bestand en zie je de inhoud daartussen niet.

Om dit te voorkomen, kun je de uitvoer van het 'cat'-commando doorsturen naar 'less', waardoor je slechts รฉรฉn scrolllengte aan inhoud tegelijk te zien krijgt.

cat filename | less

Een illustratie zou het verduidelijken. Het onderstaande diagram laat zien hoe een pijp de uitvoer van het ene commando doorgeeft aan het volgende.

Diagram van een Linux-pipe die de uitvoer van het ene commando als invoer doorgeeft aan het volgende.

'pg'- en 'more'-opdrachten

In plaats van 'less' kun je ook de opdracht pg of more gebruiken:

cat Filename | pg

or

cat Filename | more

Je kunt het bestand vervolgens in behapbare stukjes bekijken en naar beneden scrollen door simpelweg op de enter-toets te drukken. De onderstaande schermafbeelding toont een bestand dat is gepagineerd met het commando 'more'.

cat piped to the more command paging a long file one screen at time

Het 'grep'-commando

Stel dat u in een tekstbestand naar specifieke informatie wilt zoeken, zoals een postcode.

U kunt de inhoud zelf handmatig doorlezen om trace de informatie. Een betere optie is om de grep De opdracht scant het document op de gewenste informatie en presenteert het resultaat in het door u gewenste formaat.

Syntax:

grep search_string

Laten we het in actie zien. De onderstaande schermafbeelding toont het resultaat van de zoekopdracht.

Het grep-commando zoekt in het voorbeeldbestand naar de tekenreeksen Apple en Eat.

Hier heeft het grep-commando het bestand 'sample' doorzocht op de tekenreeksen 'Apple' en 'Eat'. De volgende opties kunnen met dit commando worden gebruikt.

Keuze Functie
-v Toont alle regels die niet overeenkomen met de gezochte string
-c Geeft alleen het aantal overeenkomende regels weer
-n Toont de overeenkomende lijn en het nummer ervan
-i Komt overeen met zowel hoofdletters als kleine letters
-l Toont alleen de naam van het bestand met de tekenreeks

Laten we de optie '-i' eens proberen op hetzelfde bestand als hierboven. De onderstaande schermafbeelding toont het resultaat, waarbij geen rekening wordt gehouden met hoofdletters en kleine letters.

grep -i voert een zoekopdracht uit waarbij geen rekening wordt gehouden met hoofdletters en kleine letters naar de letter a

Met de optie '-i' heeft grep de tekenreeks 'a' (hoofdletterongevoelig) uit alle regels gefilterd.

Het commando 'sorteren'

Met dit commando kun je de inhoud van een bestand alfabetisch sorteren.

De syntaxis voor deze opdracht is:

sort Filename

Bekijk de inhoud van een bestand, zoals hieronder weergegeven met `cat`.

Het `cat` commando toont de ongesorteerde inhoud van het bestand `abc`.

Door het sorteercommando uit te voeren, worden die regels in alfabetische volgorde gerangschikt, zoals hieronder weergegeven.

Het sort-commando sorteert de inhoud van het bestand abc in alfabetische volgorde.

Er bestaan โ€‹โ€‹ook uitbreidingen op dit commando, die hieronder worden vermeld.

Keuze Functie
-r Reverses sorteren
-n Sorteert numeriek
-f Sorteren zonder rekening te houden met hoofdletters

Het onderstaande voorbeeld toont het omgekeerde sorteren van de inhoud in bestand 'abc'.

`sort -r` commando sorteert de inhoud van het bestand `abc` in omgekeerde volgorde.

Wat is een filter?

Linux beschikt over een groot aantal filtercommando's, zoals awk, grep, sed, spell en wc. Een filter neemt invoer van een commando, voert een bepaalde bewerking uit en geeft uitvoer.

Wanneer je twee commando's doorstuurt via een pipe, wordt de 'gefilterde' uitvoer van het eerste commando aan het volgende doorgegeven. Het onderstaande diagram illustreert hoe een filter in een pipeline past.

Diagram van een Linux-filter dat via een pijplijn invoer ontvangt, deze verwerkt en uitvoer produceert.

Laten we dit aan de hand van een voorbeeld verduidelijken. We hebben het volgende bestand 'sample', dat hieronder met 'cat' wordt weergegeven.

Het `cat`-commando toont de inhoud van het voorbeeldbestand vรณรณr het filteren.

We willen alleen de regels markeren die de letter 'a' niet bevatten, maar het resultaat moet in omgekeerde volgorde zijn. Hiervoor kan de volgende syntax worden gebruikt:

cat sample | grep -v a | sort -r

Laten we het resultaat bekijken, zoals te zien is in de onderstaande schermafbeelding.

cat werd via grep -v en sort -r verwerkt, waardoor regels in omgekeerde volgorde werden weergegeven zonder de letter a.

Veelgestelde vragen

Een pipe (|) stuurt de uitvoer van een commando rechtstreeks naar een ander commando, waardoor ze aan elkaar gekoppeld worden. Omleiding (> en <) verbindt een commando in plaats daarvan met een bestand, waarbij de uitvoer naar een bestand wordt geschreven of de invoer uit een bestand wordt gelezen. Pipes verbinden commando's; omleiding verbindt commando's en bestanden.

grep staat voor Global Regular Expression Print. Het scant een bestand of invoer regel voor regel en print elke regel die overeenkomt met het opgegeven patroon. De naam is afgeleid van het oude editorcommando g/re/p, dat dezelfde zoekopdracht uitvoerde.

Het sort-commando heeft een -u optie waarmee dubbele regels in รฉรฉn stap worden gesorteerd en verwijderd: sort -u bestand. Je kunt sort ook doorgeven aan uniq, zoals in sort bestand | uniq, aangezien uniq alleen duplicaten verwijdert die al naast elkaar staan.

Sluit de pipeline af met omleiding: `cat sample | grep -va | sort -r > result.txt` schrijft de uiteindelijke uitvoer naar een bestand. Om de uitvoer op het scherm te zien en tegelijkertijd op te slaan, kunt u in plaats daarvan de uitvoer doorsturen naar het `tee`-commando.

`grep` zoekt in bestanden naar regels die overeenkomen met een tekstpatroon. Het `find`-commando zoekt naar bestanden en mappen op basis van naam, grootte, type of datum. Kortom, `grep` kijkt naar de inhoud van bestanden, terwijl `find` naar bestanden zoekt in de hele mappenstructuur.

Het `tee`-commando leest gegevens uit een pipe en schrijft deze tegelijkertijd naar het scherm en รฉรฉn of meerdere bestanden, bijvoorbeeld `grep error log | tee errors.txt`. Hiermee kunt u tussentijdse uitvoer opslaan zonder de pipeline te onderbreken.

AI-assistenten kunnen de juiste reeks gepijpte commando's voorstellen op basis van een eenvoudig Engels verzoek, onbekende grep- of sort-vlaggen uitleggen en fouten in een pijplijn opsporen. Machine learning-tools scannen ook de gepijpte loguitvoer om afwijkingen te signaleren die bij handmatige filtering over het hoofd zouden worden gezien.

Ja. GitHub-copiloot Kan pipelines genereren die cat, grep en sort combineren op basis van een korte opmerking waarin je beschrijft wat je nodig hebt, en commando's voltooien terwijl je typt. RevVergelijk de voorgestelde pipeline met voorbeeldgegevens, met name opties die regels herschikken of verwijderen.

Vat dit bericht samen met: