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.