Skip to main content

Hoe gegevens in een bestand te sorteren met behulp van Linux

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Juni- 2024)

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Juni- 2024)
Anonim

Invoering

In deze handleiding zal ik u laten zien hoe u gegevens in gescheiden bestanden en uit de uitvoer van andere opdrachten kunt sorteren.

Het zal u niet verbazen dat de opdracht die u gebruikt om deze taak uit te voeren "sorteren" wordt genoemd. Alle belangrijke schakelopties van het sorteercommando worden in dit artikel gegeven.

Voorbeeldgegevens

De gegevens in een bestand kunnen worden gesorteerd, zolang deze maar op een of andere manier worden gescheiden.

Laten we bijvoorbeeld de laatste ranglijst uit de Schotse Premier League van vorig jaar nemen en de gegevens opslaan in een bestand met de naam "spl".

U kunt een gegevensbestand als volgt samenstellen met één club en de gegevens voor die club gescheiden door komma's op elke rij.

TeamDoelen ScoordeDoelpunten tegenpunten
keltisch933186
Aberdeen624871
Hearts594065
St Johnstone585556
Motherwell476350
Ross County556148
Inverness544852
Dundee535748
Partick415046
Hamilton426343
Kilmarnock416436
Dundee United457028

Hoe gegevens in bestanden te sorteren

Uit die tabel kun je zien dat Celtic de competitie heeft gewonnen en Dundee United als laatste. Als je een fan bent van Dundee United, wil je misschien dat je je beter voelt en kun je dit doen door te sorteren op gescoorde doelpunten.

Hiertoe voert u de volgende opdracht uit:

sort -k2 -t, spl

Deze keer zou de bestelling als volgt zijn:

  • Partick
  • Kilmarnock
  • Hamilton
  • Dundee United
  • Motherwell
  • Dundee
  • Inverness
  • Ross County
  • St Johnstone
  • Hearts
  • Aberdeen
  • keltisch

De reden dat de resultaten in deze volgorde zijn, is dat kolom 2 de doelscore kolom is en de sortering van laagste naar hoogste gaat.

Met de schakeloptie -k kunt u de kolom kiezen om op te sorteren en met de schakeloptie -t kunt u het scheidingsteken kiezen.

Om zichzelf echt gelukkig te maken kunnen de fans van Dundee United sorteren op kolom 4 met behulp van het volgende commando:

sort -k4 -t, spl

Nu zijn Dundee United top en Celtic staan ​​onderaan.

Dit zou natuurlijk de fans van Celtic en Dundee erg ongelukkig maken. Om dingen recht te zetten, kunt u in omgekeerde volgorde sorteren met behulp van de volgende schakelaar:

sort -k4 -t, -r spl

Met een nogal bizarre schakelaar kun je willekeurig sorteren, waardoor de rijen met gegevens echt door elkaar worden gehaald.

U kunt dit doen met behulp van de volgende opdracht:

sort -k4 -t, -R spl

Dit zou echte problemen kunnen veroorzaken als je je -r en je -R switch verwisselt.

Het sorteercommando kan ook datums sorteren in maandvolgorde. Om aan te tonen kijkt u naar de volgende tabel:

MaandGebruikte gegevens
januari-4G
februari3000K
maart6000K
april100M
mei5000M
juni-200K
juli-4000K
augustus2500K
september3000K
oktober1000K
november3G
december2G

De bovenstaande tabel geeft de maand van het jaar weer en de hoeveelheid gegevens die op een mobiel apparaat wordt gebruikt.

U kunt de datums alfabetisch sorteren met behulp van de volgende opdracht:

sort -k1 -t, datausedlist

U kunt ook sorteren op maand met behulp van de volgende opdracht:

sort -k1 -t, -M datausedlist

Het is duidelijk dat de bovenstaande tabel ze al in de volgorde van de maand toont, maar als de lijst willekeurig werd ingevuld, zou dit een eenvoudige manier zijn om ze te sorteren.

Als u naar de tweede kolom kijkt, ziet u dat alle waarden in een door mensen leesbaar formaat zijn dat er niet uitziet alsof het gemakkelijk te sorteren is, maar het sorteercommando kan de kolom gegevens die gebruikt is sorteren met behulp van de volgende opdracht:

sort -k2 -t, -h datausedlist

Gegevens sorteren die zijn doorgegeven via andere opdrachten

Hoewel het sorteren van gegevens in bestanden handig is, kan het sorteercommando ook worden gebruikt om de uitvoer van andere opdrachten te sorteren:

Kijk bijvoorbeeld naar het ls-commando:

ls -lt

Met de opdracht hierboven wordt elk bestand geretourneerd als een gegevensrij met de volgende velden weergegeven in kolommen:

  • toestemmingen
  • knooppunttelling
  • gebruikersnaam
  • groepsnaam
  • grootte
  • laatste toegangsdatum
  • bestandsnaam

U kunt de lijst sorteren op bestandsgrootte door de volgende opdracht uit te voeren:

ls -lt | sorteer -k5

Om de resultaten in omgekeerde volgorde te krijgen, gebruikt u de volgende opdracht:

ls -lt | sort -k5 -r

Het sorteercommando kan ook worden gebruikt in combinatie met de ps-opdracht die processen vermeldt die op uw systeem worden uitgevoerd.

Voer bijvoorbeeld de volgende ps-opdracht uit op uw systeem:

ps -eF

De opdracht hierboven retourneert veel informatie over de processen die momenteel op uw systeem worden uitgevoerd.

Een van die kolommen is de grootte en u wilt wellicht zien welke processen het grootst zijn.

Als u deze gegevens op grootte wilt sorteren, gebruikt u de volgende opdracht:

ps -eF | sorteer -k5

Samenvatting

Er is niet veel aan het sorteercommando maar het kan zeer snel nuttig worden als het sorteren van uitvoer van andere opdrachten naar een zinvolle volgorde, vooral wanneer het commando niet zijn eigen sorteerschakelaars heeft, beschikbaar is.

Lees voor meer informatie de handleidingpagina's voor het sorteercommando.