Pipe, Grep och Sort Command i Linux/Unix med exempel

⚡ Smart sammanfattning

Pipe-, grep- och sort-kommandon i Linux och Unix kedje- och filtrera text: en pipe-kommando matar utdata från ett kommando till nästa, grep söker efter mönster och sort ordnar rader, medan filter transformerar data mellan dem.

  • 🔗 Rör: Rörsymbolen | skickar utdata från ett kommando som indata till nästa.
  • 📄 Personsökning: cat piped to less, pg, eller more visar en lång fil en skärm i taget.
  • 🔍 grep: Kommandot grep söker i en fil efter rader som matchar en sträng eller ett mönster.
  • 🎚️ grep-alternativ: Flaggor som -v, -c, -n, -i och -l inverterar, räknar, numrerar, ignorerar skiftlägen och listar filer.
  • 🔤 sortera: Sort-kommandot ordnar en fils rader, med -r, -n och -f för omvänd, numerisk och skiftlägesokänslig.
  • 🧪 Filter: Filterkommandon som grep, sort, awk, sed och wc bearbetar piped input och producerar utdata.
  • 🤖 AI-hjälp: AI-assistenter och GitHub Copilot kan bygga och förklara pipelines för pipelines, grep och sortering.

Pipe-, grep- och sort-kommandon i Linux och Unix med exempel

Pipes, grep och sort är bland de mest använda verktygen på Linux kommandoraden, eftersom de låter dig koppla samman små kommandon till ett kraftfullt arbetsflöde. Den här sidan förklarar vart och ett med fungerande exempel och visar sedan hur filter kopplar ihop dem.

Vad är ett rör i Linux?

Pipe är ett kommando i Linux som låter dig använda två eller flera kommandon så att utdata från ett kommando fungerar som indata för nästa. Kort sagt, utdata från varje process matas direkt som indata till nästa, som en pipeline. Symbolen '|' betecknar en pipe.

Pipes hjälper dig att blanda ihop två eller flera kommandon samtidigt och köra dem efter varandra. Du kan använda kraftfulla kommandon som utför komplexa uppgifter på ett ögonblick.

Låt oss förstå detta med ett exempel.

När du använder kommandot 'cat' för att visa en fil som sträcker sig över flera sidor, hoppar prompten snabbt till den sista sidan i filen, och du ser inte innehållet i mitten.

För att undvika detta kan du skicka utdata från kommandot 'cat' till 'less', vilket bara visar en rullningslängd av innehåll åt gången.

cat filename | less

En illustration skulle förtydliga det. Diagrammet nedan visar hur en pipe skickar utdata från ett kommando till nästa.

Diagram över ett Linux-pipe som skickar utdata från ett kommando som indata till nästa

kommandona 'pg' och 'more'

Istället för 'less' kan du också använda kommandot pg eller more:

cat Filename | pg

or

cat Filename | more

Du kan sedan visa filen i lättförståeliga bitar och scrolla nedåt genom att helt enkelt trycka på Enter-tangenten. Skärmdumpen nedan visar en fil som har öppnats med kommandot "more".

katt skickas till kommandot more och pausar en lång fil, en skärm i taget

Kommandot 'grep'

Anta att du vill söka efter specifik information, till exempel ett postnummer, i en textfil.

Du kan skumma igenom innehållet manuellt själv för att tracinformationen. Ett bättre alternativ är att använda grep kommandot. Den skannar dokumentet efter önskad information och presenterar resultatet i det format du önskar.

Syntax:

grep search_string

Låt oss se det i praktiken. Skärmdumpen nedan visar resultatet av sökningen.

grep-kommandot söker i exempelfilen efter strängarna Apple och Eat

Här har grep-kommandot sökt i filen 'sample' efter strängarna 'Apple' och 'Eat'. Följande alternativ kan användas med det här kommandot.

Alternativet Funktion
-v Visar alla rader som inte matchar den sökta strängen
-c Visar endast antalet matchande rader
-n Visar den matchande raden och dess nummer
-i Matchar både versaler och gemener
-l Visar bara namnet på filen med strängen

Låt oss prova alternativet '-i' på samma fil som användes ovan. Skärmdumpen nedan visar resultatet utan att skiftlägeskänsligt användas.

grep -i utför en sökning efter bokstaven a utan att skiftlägena känsliga

Med hjälp av alternativet '-i' har grep filtrerat strängen 'a' (okänslig för versaler och skiftlägen) från alla rader.

Kommandot 'sortera'

Det här kommandot hjälper till att sortera innehållet i en fil alfabetiskt.

Syntaxen för detta kommando är:

sort Filename

Betrakta innehållet i en fil, visad med cat nedan.

cat-kommandot som visar det osorterade innehållet i filen abc

Genom att köra sorteringskommandot ordnas raderna i alfabetisk ordning, som visas nedan.

sorteringskommandot ordnar innehållet i filen abc i alfabetisk ordning

Det finns även tillägg till det här kommandot, och de listas nedan.

Alternativet Funktion
-r Reversesortering
-n Sorterar numeriskt
-f Skiftlägesobegränsad sortering

Exemplet nedan visar omvänd sortering av innehållet i filen 'abc'.

sort -r-kommandot omvänd sortering av innehållet i filen abc

Vad är ett filter?

Linux har många filterkommandon som awk, grep, sed, spell och wc. Ett filter tar indata från ett kommando, utför en del bearbetning och ger utdata.

När du piper två kommandon ges den "filtrerade" utdata från det första kommandot till nästa. Diagrammet nedan illustrerar hur ett filter passar in i en pipeline.

Diagram över ett Linux-filter som tar piped input, bearbetar det och producerar utdata

Låt oss förstå detta med hjälp av ett exempel. Vi har följande fil 'exempel', som visas med cat nedan.

cat-kommandot visar innehållet i exempelfilen före filtrering

Vi vill bara markera de rader som inte innehåller tecknet 'a', men resultatet ska vara i omvänd ordning. För detta kan följande syntax användas:

cat sample | grep -v a | sort -r

Låt oss titta på resultatet, som visas på skärmdumpen nedan.

cat skickades genom grep -v och sort -r vilket producerade omvända rader utan bokstaven a

Vanliga frågor

En pipe (|) skickar utdata från ett kommando direkt till ett annat kommando och länkar dem samman. Omdirigering (> och <) kopplar istället ett kommando till en fil, och skriver utdata till en fil eller läser indata från en. Pipes länkar kommandon; omdirigering länkar kommandon och filer.

grep står för Global Regular Expression Print. Den skannar en fil eller inmatning rad för rad och skriver ut varje rad som matchar det mönster du anger. Namnet kommer från det gamla ed-redigeringskommandot g/re/p, som utförde samma sökning.

Kommandot sort har ett -u-alternativ som sorterar och tar bort dubbletter i ett steg: sort -u file. Du kan också skicka sort till uniq, som i sort file | uniq, eftersom uniq bara tar bort dubbletter som redan ligger intill varandra.

Avsluta pipelinen med omdirigering: cat sample | grep -va | sort -r > result.txt skriver den slutliga utdata till en fil. För att se utdata på skärmen och spara den samtidigt, skicka in kommandot `tee` istället.

grep söker inuti filer efter rader som matchar ett textmönster. Kommandot find lokaliserar filer och kataloger själva efter namn, storlek, typ eller datum. Kort sagt, grep tittar på filinnehåll, medan find letar efter filer i katalogträdet.

Kommandot tee läser från en pipe och skriver data till både skärmen och en eller flera filer samtidigt, till exempel grep error log | tee errors.txt. Det låter dig spara mellanliggande utdata utan att bryta pipelinen.

AI-assistenter kan föreslå rätt kedja av piped-kommandon från en förfrågan på vanligt språk, förklara okända grep- eller sorteringsflaggor och upptäcka misstag i en pipeline. Maskininlärningsverktyg skannar också piped log-utdata för att flagga avvikelser som manuell filtrering skulle missa.

Ja. GitHub Copilot kan generera pipelines som kombinerar cat, grep och sort från en kort kommentar som beskriver vad du behöver, och slutföra kommandon medan du skriver. RevVisa alla föreslagna pipelines mot exempeldata, särskilt alternativ som ändrar ordning på eller tar bort rader.

Sammanfatta detta inlägg med: