Zoeken op website

14 Handige voorbeelden van Linux 'sort'-commando - Deel 1


De opdracht ‘sort’ is een Linux-programma dat wordt gebruikt voor het afdrukken van regels van invoertekstbestanden en het aaneenschakelen van alle bestanden in gesorteerde volgorde. Sorteeropdracht gebruikt lege ruimte als veldscheidingsteken en het volledige invoerbestand als sorteersleutel. Het is belangrijk op te merken dat de sorteeropdracht de bestanden niet daadwerkelijk sorteert, maar alleen de gesorteerde uitvoer afdrukt totdat u de uitvoer omleidt.

Dit artikel beoogt een diepgaand inzicht in het Linux ‘sort’ commando met 14 nuttige praktische voorbeelden die laten zien hoe je het sort commando in Linux kunt gebruiken.

1. Een tekstbestand maken met gespecificeerde inhoud

Eerst zullen we een tekstbestand maken met de naam 'tecmint.txt', dat zal worden gebruikt voor het uitvoeren van 'sort' commandovoorbeelden in onze werkdirectory voor deze taak is ' /home/$USER/Desktop/tecmint'.

De optie ‘-e’ in het onderstaande commando maakt interpretatie van de backslash mogelijk en /n vertelt het echo-commando om elke string naar een nieuwe regel te schrijven.

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2. Bekijk de bestandsinhoud

Voordat we beginnen met het commando ‘sort’, kijken we eerst naar de inhoud van het bestand en hoe het eruit ziet met behulp van het volgende cat-commando.

cat tecmint.txt

3. Bestandsinhoud sorteren

Het commando “sort tecmint.txt” wordt gebruikt om de regels in het bestand in oplopende alfabetische volgorde te herschikken. Als er dubbele regels zijn, wordt er één kopie van elke unieke regel bewaard.

sort tecmint.txt

Opmerking: De bovenstaande opdracht sorteert de inhoud van het tekstbestand niet, maar geeft alleen de gesorteerde uitvoer op de terminal weer.

4. Gesorteerde uitvoer omleiden naar nieuw bestand

De volgende opdracht wordt gebruikt om de regels van het tekstbestand “tecmint.txt” in alfabetische volgorde te sorteren en stuurt vervolgens de gesorteerde uitvoer om naar een nieuw bestand met de naam “gesorteerd.txt “, wat betekent dat het originele bestand ongewijzigd blijft en de gesorteerde inhoud in een apart bestand wordt opgeslagen.

Gebruik het cat-commando om de inhoud te verifiëren.

sort tecmint.txt > sorted.txt
cat sorted.txt

5. Bestandsinhoud in omgekeerde volgorde sorteren

Het volgende commando wordt gebruikt om de regels van het tekstbestand “tecmint.txt” in omgekeerde volgorde te sorteren, wat betekent dat de regels in aflopende alfabetische volgorde worden gerangschikt en de gesorteerde uitvoer vervolgens wordt omgeleid naar een nieuw bestand met de naam “omgekeerd gesorteerd.txt

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. Lijst met bestanden en mappen opslaan

Het volgende commando wordt gebruikt om de inhoud van de homedirectory van de gebruiker (“/home/$USER“) weer te geven in een gedetailleerde, lange weergave met behulp van het ls-commando en vervolgens wordt deze directoryvermelding omgeleid naar een tekstbestand met de naam “lsl.txt” dat zich op het bureaublad van de gebruiker bevindt, met name in de map “tecmint”.

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

Nu zullen we voorbeelden verkennen van het sorteren van de inhoud op basis van andere velden dan de standaard begintekens.

7. Sorteren van ‘bestandsinhoud op basis van het tweede veld

De volgende opdracht wordt gebruikt om de inhoud van het bestand “lsl.txt” te sorteren op basis van de waarden in het tweede veld van elke regel. De optie '-n' geeft een numerieke sortering aan, waarbij het tweede veld als getallen wordt behandeld in plaats van als tekst.

De '-k2' optie specificeert dat we willen sorteren op basis van het tweede veld. Door deze opdracht uit te voeren, verkrijgt u een gesorteerde lijst met de regels in “lsl.txt“, waarbij de sorteercriteria de numerieke waarden in het tweede veld van elke regel zijn.

sort -nk2 lsl.txt

8. Bestandsinhoud sorteren op basis van het negende veld

De volgende opdracht wordt gebruikt om de regels in het bestand “lsl.txt” te sorteren op basis van de waarden in het negende veld van elke regel in oplopende volgorde. De '-k9' optie geeft aan dat er gesorteerd moet worden op basis van het negende veld.

sort -k9 lsl.txt

9. Sorteer bestanden op bestandsgrootte

De volgende opdracht combineert de opdrachten 'ls' en 'sort' om de inhoud van de thuismap van de gebruiker weer te geven in een lange lijstindeling en vervolgens wordt de maplijst doorgestuurd naar 'sort -nk5', die de lijst sorteert op basis van de waarden in de vijfde kolom, die de bestandsgroottes vertegenwoordigt.

ls -l /home/$USER | sort -nk5

10. Dubbele regels in bestand verwijderen

Het volgende commando sorteert de regels in het bestand “tecmint.txt” in oplopende alfabetische volgorde en verwijdert eventuele dubbele regels met behulp van de '-u' optie, wat staat voor “unique”, en het zorgt ervoor dat unieke regels behouden blijven in de gesorteerde uitvoer.

cat tecmint.txt
sort -u tecmint.txt

Regels tot nu toe (wat we hebben nageleefd):

  • Regels die beginnen met cijfers hebben de voorkeur in de lijst en staan bovenaan totdat anders is aangegeven (-r).
  • Regels die beginnen met kleine letters hebben de voorkeur in de lijst en staan bovenaan totdat anders is aangegeven (-r).
  • De inhoud wordt weergegeven op basis van het voorkomen van alfabetten in het woordenboek, totdat anders is aangegeven (-r).
  • De sorteeropdracht behandelt elke regel standaard als een tekenreeks en sorteert deze vervolgens afhankelijk van het voorkomen van alfabetten in het woordenboek (bij voorkeur numeriek; zie regel – 1) totdat anders is aangegeven.

11. Directorylijst omleiden naar bestand

Met het volgende commando wordt de inhoud van de thuismap van de gebruiker in lang formaat weergegeven, inclusief verborgen bestanden en mappen, en wordt de mapvermelding vervolgens omgeleid naar een tekstbestand met de naam “lsla.txt” dat zich op het bureaublad van de gebruiker bevindt. de map “tecmint”.

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

Degenen die bekend zijn met het ls-commando begrijpen dat 'ls -lA' gelijk is aan 'ls -l' plus verborgen bestanden. Als gevolg hiervan zal het grootste deel van de inhoud van deze twee opdrachten hetzelfde zijn.

12. Inhoud van bestanden sorteren

Het volgende commando sorteert de inhoud van twee tekstbestanden, 'lsl.txt' en 'lsla.txt', in oplopende alfabetische volgorde en combineert vervolgens de gesorteerde inhoud en geeft deze weer in de terminal.

sort lsl.txt lsla.txt

Let op de herhaling van bestanden en mappen.

13. Dubbele regels in bestand verwijderen

Met de volgende opdracht wordt de inhoud van twee tekstbestanden, 'lsl.txt' en 'lsla.txt', samengevoegd en gesorteerd in oplopende alfabetische volgorde, terwijl eventuele dubbele regels worden verwijderd met behulp van de '-u' optie, die ervoor zorgt dat unieke regels behouden blijven in de gesorteerde uitvoer.

sort -u lsl.txt lsla.txt

Merk op dat duplicaten zijn weggelaten uit de uitvoer. Bovendien kunt u de uitvoer opslaan in een nieuw bestand door het om te leiden.

14. Uitvoer sorteren op meerdere velden met behulp van een aangepast scheidingsteken

Het volgende commando combineert de commando's 'ls' en 'sort' om de inhoud van de homedirectory van de gebruiker in lang formaat weer te geven en vervolgens wordt de directorylijst doorgestuurd naar de 'sort' commando, dat de uitvoer sorteert op basis van specifieke kolommen en velden.

ls -l /home/$USER | sort -t "," -nk2,5 -k9

Hier is een overzicht van de opdracht:

  • -t "," – specificeert dat een komma (",") wordt gebruikt als veldscheidingsteken.
  • -nk2,5 – geeft sortering aan op een numerieke waarde in de kolommen 2 tot en met 5, die doorgaans machtigingen en eigendomsgegevens vertegenwoordigen.
  • -k9 – sorteert het resultaat verder op basis van de negende kolom, die de bestandsgroottes vertegenwoordigt.

Dat is het voor nu. In het volgende artikel zullen we voor u dieper ingaan op meer gedetailleerde voorbeelden van de sorteeropdracht.

Blijf alstublieft delen, reageren, liken en help ons een breder publiek te bereiken.