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.
Team | Doelen Scoorde | Doelpunten tegen | punten |
---|---|---|---|
keltisch | 93 | 31 | 86 |
Aberdeen | 62 | 48 | 71 |
Hearts | 59 | 40 | 65 |
St Johnstone | 58 | 55 | 56 |
Motherwell | 47 | 63 | 50 |
Ross County | 55 | 61 | 48 |
Inverness | 54 | 48 | 52 |
Dundee | 53 | 57 | 48 |
Partick | 41 | 50 | 46 |
Hamilton | 42 | 63 | 43 |
Kilmarnock | 41 | 64 | 36 |
Dundee United | 45 | 70 | 28 |
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:
Maand | Gebruikte gegevens |
---|---|
januari- | 4G |
februari | 3000K |
maart | 6000K |
april | 100M |
mei | 5000M |
juni- | 200K |
juli- | 4000K |
augustus | 2500K |
september | 3000K |
oktober | 1000K |
november | 3G |
december | 2G |
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.