Zoeken op website

7 Interessante Linux 'sorteer'-opdrachtvoorbeelden - Deel 2


In ons laatste artikel hebben we verschillende voorbeelden van het commando ‘sort’ besproken. Als je het gemist hebt, kun je het inhalen via onderstaande link. In dit bericht gaan we verder waar we gebleven waren in het vorige artikel, om de resterende aspecten van de opdracht te bespreken. Op deze manier zullen beide artikelen samen dienen als een uitgebreide gids voor het Linux ‘sort’ commando.

Voordat we verder gaan, maakt u een tekstbestand met de naam ‘maand.txt‘ en vult u dit in met de onderstaande gegevens.

echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt
cat month.txt

15. Bestandsinhoud sorteren op maand

Het volgende commando sorteert de inhoud van het bestand “maand.txt” in chronologische volgorde op basis van de maandafkorting of naam met behulp van de '-M' optie die de 'sort' om de gegevens als datums te behandelen en dienovereenkomstig te sorteren.

sort -M month.txt

16. Uitvoer sorteren op bestandsgrootte in voor mensen leesbaar formaat

Het volgende commando combineert de opdrachten ‘ls’ en ‘sort’ om twee taken uit te voeren. Eerst wordt de inhoud van de homedirectory van de gebruiker in lang formaat weergegeven en vervolgens wordt deze directoryvermelding doorgestuurd naar het 'sort'-commando om de bestandsgroottes af te drukken in een voor mensen leesbaar formaat, waardoor het gemakkelijker wordt om de grootste en kleinste bestanden in de map te identificeren. de map.

ls -l /home/$USER | sort -h -k5

17. Gesorteerde bestanden controleren op consistentie

In het vorige artikel hebben we twee tekstbestanden gegenereerd: 'sorted.txt' in voorbeeld nummer 4 en 'lsl.txt' in voorbeeld nummer 6. We zijn ons ervan bewust dat ' gesorteerd.txt' is al gesorteerd, terwijl 'lsl.txt' dat niet is.

Om de sorteerstatus van beide bestanden te verifiëren, gebruiken we het commando 'sort', waarmee we kunnen bevestigen of 'sorted.txt' in de juiste volgorde blijft en of 'lsl.txt' sortering vereist.

sort -c sorted.txt

Als 0 wordt geretourneerd, betekent dit dat het bestand is gesorteerd en dat er geen conflict is.

sort -c lsl.txt

18. Omgaan met scheidingstekens wanneer er geen spaties in een bestand worden gebruikt

Als het scheidingsteken (scheidingsteken) tussen woorden een spatie is, interpreteert het commando 'sort' automatisch alles na een horizontale spatie als een nieuw woord. Maar wat gebeurt er als het scheidingsteken geen spatie is?

Beschouw een tekstbestand waarvan de inhoud wordt gescheiden door iets anders dan een spatie, zoals '|' of '\' of '+' of '.' of ...

Maak een tekstbestand waarin de inhoud wordt gescheiden door +. Gebruik het cat-commando om de inhoud van het bestand te controleren.

echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
cat delimiter.txt

Sorteer dit bestand nu op basis van het 1e veld, dat numeriek is.

sort -t '+' -nk1 delimiter.txt

De tweede is gebaseerd op het 4e veld dat niet-numeriek is.

Als het scheidingsteken Tab is, kunt u $'\t' gebruiken in plaats van '+', zoals weergegeven in het bovenstaande voorbeeld.

19. Uitvoer willekeurig sorteren op bestandsgrootte

Sorteer de uitvoer van het ls -l-commando voor uw thuismap op basis van de vijfde kolom, die de ‘hoeveelheid gegevens’ vertegenwoordigt, in willekeurige volgorde.

ls -l /home/avi/ | sort -k5 -R 

Elke keer dat u het bovenstaande script uitvoert, krijgt u waarschijnlijk een ander resultaat, omdat het resultaat willekeurig wordt gegenereerd.

Zoals duidelijk blijkt uit Regelnummer – 2 uit het vorige artikel, geeft de opdracht sort de voorkeur aan regels die beginnen met kleine letters boven hoofdletters. Controleer ook voorbeeld 3 in het laatste artikel, waar de string ‘laptop’ verschijnt vóór de string ‘LAPTOP‘.

20. Standaard sorteervoorkeuren overschrijven

Hoe kan ik de standaard sorteervoorkeur overschrijven? Voordat we de standaard sorteervoorkeur kunnen overschrijven, moeten we de omgevingsvariabele 'LC_ALL' exporteren naar 'C'.

Om dit te doen, voert u de onderstaande code uit op uw opdrachtregelprompt.

export LC_ALL=C

En sorteer vervolgens het tekstbestand ‘tecmint.txt’ waarbij de standaard sorteervoorkeur wordt overschreven.

sort tecmint.txt

Vergeet niet de uitvoer te vergelijken met degene die u in voorbeeld 3 heeft bereikt en u kunt ook de optie '-f' oftewel '--ignore- gebruiken case' om overzichtelijke uitvoer te krijgen.

sort -f tecmint.txt

21. Twee invoerbestanden combineren in één enkele handeling

Hoe zit het met het uitvoeren van ‘sorteren‘ op twee invoerbestanden en deze in één keer samenvoegen?

Laten we twee tekstbestanden maken, namelijk ‘file1.txt‘ en ‘file2.txt‘, en deze vullen met wat gegevens. In ‘file1.txt‘ voegen we getallen toe, zoals hieronder weergegeven. We gebruiken ook het cat-commando om de inhoud van het bestand te inspecteren

echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt
cat file1.txt

En vul het tweede bestand ‘file2.txt‘ met enkele gegevens als.

echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt
cat file2.txt

Sorteer nu de uitvoer van beide bestanden en voeg ze samen.

join <(sort -n file1.txt) <(sort file2.txt)

Conclusie

Concluderend heeft dit artikel verschillende aspecten van de opdracht ‘sort’ in Linux onderzocht. We zijn begonnen met de basissortering op alfabetische volgorde, waagden ons aan numeriek en op datum gebaseerd sorteren en hebben zelfs aangepaste scheidingstekens aangeroerd. We hebben ook geleerd hoe we de standaard sorteervoorkeuren kunnen overschrijven om aan onze behoeften te voldoen.

Bovendien hebben we technieken besproken om te controleren of een bestand al is gesorteerd en om ‘sorteer’-bewerkingen voor meerdere invoerbestanden te combineren. Met de kennis die je hier opdoet, heb je een krachtige tool tot je beschikking om data efficiënt te sorteren en organiseren in een Linux-omgeving.

We hopen dat dit artikel inzichtelijk en nuttig is geweest voor uw opdrachten op de opdrachtregel. Blijf de kunst van het ‘sorteren’ verkennen, leren en beheersen om je Linux-vaardigheden te verbeteren.