Dit is de laatste les van de Shell / SSH cursus. In deze les behandelen we nog een aantal nuttige commando’s, waarmee je bijvoorbeeld teksten kunt bewerken en hoe je bepaalde gegevens bij een domein kunt achterhalen.

Mocht je de eerste vijf lessen van de Shell cursus gemist hebben, kijk dan even voor het overzicht van alle lessen op de pagina Shell Cursus

Werken met teksten in bestanden

Tekst uit een bestand sorteren met sort

Met het sort commando kun je de tekst in een bestand sorteren. In het volgende voorbeeld zie je wat voor invloed dat heeft op het test.html bestand.

sort test.html

Zoals je ziet worden de regels op alfabetische volgorde gesorteerd nu, waarbij de lege regels als eerst worden getoond.
Je kunt de resultaten ook andersom laten zien:

sort -r test.html

Je kunt ook regels numeriek laten sorteren.

sort -n test.html

De normale sorteer regels gelden hierbij ook en als extraatje worden ook de regels die beginnen met een nummer gesorteerd. Dit zelfde kun je ook andersom laten doen:

sort -nr test.html

Gedeeltes van een regel tekst opvragen met awk

Soms willen we slechts een specifiek gedeelte van een regel tekst hebben. Als je bijvoorbeeld op zoek bent naar een specifiek detail binnen een regel aan tekst. Vaak is tekst gescheiden door een spatie en met gebruik van het awk commando kun je specifieke velden uit een regel halen. In het voorbeeld haal ik uit het test.html elk tweede woord van een regel.

cat test.html| awk '{print $2}'

Zoals je kunt zien heb je nu als output elk tweede woord van een regel als output. Welk specifieke veld je wilt hebben kun je aangeven via $ met een nummer. Wil ik het vierde woord uit een regel hebben dan gebruik ik $4. Het awk commando geeft elk specifieke veld automatisch een eigen veldnummer ($) en zodoende kun je heel gedetailleerde informatie uit een regel tekst halen met dit commando.

Gedeeltes van een regel tekst opvragen met cut

Een soortgelijk commando als awk is het cut commando. Met dit commando kun je een bepaald gedeelte van de tekst wegknippen en deze zie je dan niet als output. Als voorbeeld kijken we even naar wat er gebeurt als we dit toepassen op een ls -l commando.

ls -l| cut -c2-10,52-

Zoals je ziet wordt er slechts een bepaalde gedeelte van de eerste ls -l weergave getoond op het moment dat je cut gebruikt. Maar wat betekent -c2-10, 52- precies? Hiermee geef je aan dat je slechts het 2e karakter t/m het 10e karakter wilt zien, en daarna van karakter 52 tot aan het eind.

Unieke regels uit een bestand filteren met uniq

Regelmatig komt het voor dat je regels krijgt waar precies dezelfde informatie staat. Hier zit je niet altijd op te wachten en daar kun je dan ook het uniq commando voor gebruiken. Nadeel echter van dit commando is dat uniq slechts de dubbele regels eruit haalt als ze achter elkaar getoond worden. Je moet dus eerst deze regels sorteren.

cat test.html| sort|uniq

Je hebt nu als eerst de tekst in het test.html bestand gesorteerd, waarna je met het uniq commando de unieke regels eruit laat halen. Je kunt ook via het uniq commando opvragen hoe vaak bepaalde regels voorkomen.

cat test.html| sort|uniq -c

Je hebt nu 4 lege regels in het bestand en er zijn nogal wat dubbele regels. Hieronder wordt uitgelegd hoe je in 1 keer de dubbele regels eruit kan halen.

cat test.html| sort|uniq -d

Met uniq -d laat je alleen de regels zien die er dubbel in staan.

Kort samengevat

sort bestand        Hiermee sorteer je de regels van een bestand (alfabetisch)
sort -r bestand     Hiermee sorteer je de regels van een bestand (alfabetisch)                     
                    maar dan van achter naar voren
sort -n bestand     Hiermee sorteer je de regels van een bestand zowel alfabetisch                     
                    als numeriek
awk '{print $}'     Laat een specifiek veld binnen een regel zien
cut -c[range]       Laat slechts een bepaalde range binnen een regel zien
uniq                Laat unieke regels binnen een bestand zien
uniq -c             Telt het aantal dubbele en unieke regels binnen een bestand
uniq -d             Laat de dubbele regels zien

Andere relevante lessen

01