Notities PXL Help

Bestanden en output aanpassen

Soms is de output van een bestand of commando niet helemaal hoe je het wilt.
In dat geval kan je de inhoud of de output van het bestand of commando aanpassen.

Inhoud aanpassen

In vorige hoofdstukken is al uitgelegd hoe je > & >> kan gebruiken in combinatie met commando's zoals echo om de inhoud van een bestand aan te passen.

gebruiker@ubuntu:~$ echo "Dit is een test" > test.txt gebruiker@ubuntu:~$ cat >> test.txt Dit is een tweede regel gebruiker@ubuntu:~$ cat test.txt Dit is een test Dit is een tweede regel

Dat is een manier om kleine simpele stukjes tekst toe te voegen aan een bestand.
Maar als je iets ingewikkelder wilt doen is het onhandig.

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Zoals notepad op Windows bestaan er ook tekstverwerkers voor de CLI in Linux.
Een van de bekendste is nano.

Je kan nano gebruiken om bestanden te bewerken en aan te maken.

Een bestand openen en deze dan bewerken:
Als het bestand nog niet bestaat, wordt deze automatisch aangemaakt.

gebruiker@ubuntu:~$ nano test.txt GNU nano 7.2 1 2 3 hallo [ New File ] ^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute ^C Location ... ^X Exit ^R Read File ^/ Replace ^U Paste ^J Justify ^- Go To Line ...

Hier kan je gewoon typen wat je wilt.
^ betekent de Ctrl toets. M betekent de Alt toets.
Er zijn enkele belangrijke shortcuts die je kan gebruiken:

  • Ctrl+s: Bestand opslaan

  • Ctrl+x: Afsluiten

  • Ctrl+k: Hele regel of geselecteerde tekst knippen

  • Ctrl+u: Plakken

  • Alt+u: Ongedaan maken

  • Alt+e: Opnieuw doen

  • Ctrl+g: Help

  • Alt+m: Maakt het mogelijk om de muis te gebruiken

Output aanpassen

Er zijn veel commando's die de output van een bestand aanpassen.

Om de volledige onaangepaste output van een bestand te zien kan je cat gebruiken.
Een variant van cat is tac:

gebruiker@ubuntu:~$ tac test.txt hallo 3 2 1

tac is cat maar dan van onder naar boven.

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

head toont de eerste 10 regels van een bestand.

gebruiker@ubuntu:~$ head lange_tekst.txt 1 2 3 4 ...

Je kan een nummer als argument geven om dat aantal regels te tonen.

gebruiker@ubuntu:~$ head -2 lange_tekst.txt 1 2

tail toont de laatste 10 regels van een bestand.

gebruiker@ubuntu:~$ tail lange_tekst.txt 45 46 47 48 ...

Je kan een nummer als argument geven om dat aantal regels te tonen.

gebruiker@ubuntu:~$ tail -2 lange_tekst.txt 53 54

Je kan ook tail -f gebruiken om de laatste regels van een bestand te zien en nieuwe regels die toegevoegd worden. Dit is handig voor bijvoorbeeld een log bestand live te volgen.

gebruiker@ubuntu:~$ tail -f lange_tekst.txt

less toont de inhoud van een bestand deel per deel.

Dit is wat er gebruikt wordt als je een man page bekijkt. Zo wordt niet alle tekst tegelijk op je scherm gezet, kan je scrollen en woorden zoeken zoals bij de man pages.

gebruiker@ubuntu:~$ less lange_tekst.txt

more toont de inhoud van een bestand deel per deel.

Dit is soortgelijk aan less, maar meer beperkt.

Je kan niet terug scrollen en deze is minder krachtig.

gebruiker@ubuntu:~$ more lange_tekst.txt

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

grep

Er zijn verschillende commando's en technieken om de output van een bestand te filteren.

Het commando grep is een van de bekendsten.
grep filtert de output en toont alleen de regels die overeenkomen met de zoekterm.

gebruiker@ubuntu:~$ grep "zoekterm" boek.txt De zoekterm die hij gebruikte toen hij zijn vraag opzocht...

Je kan het ook gebruiken met een pipe.

gebruiker@ubuntu:~$ ls | grep "f" file.txt folder

Een aantal handige opties zijn:

  • -v: Toont de regels die niet overeenkomen met de zoekterm.

  • -n: Toont het regelnummer van de gevonden regels.

  • -c: Toont het aantal gevonden regels.

  • -e: Kan meerdere keren gebruikt worden om extra zoektermen toe te voegen.

  • -A1,B1,C1: After, Before, Context. Toont extra regels rond de gevonden regels.

  • -E: Maakt het mogelijk om uitgebreide regex te gebruiken.

regex

Je kan ook regex gebruiken om complexere zoekopdrachten te doen.
Regex is een manier om patronen te zoeken in tekst.

Regex werkt met karakters die een specifieke betekenis hebben.
Hier zijn enkele voorbeelden van regex karakters:

  • *: Matcht 0 of meer karakters.

  • +: Matcht 1 of meer van het vorige karakter.

  • ?: Matcht 0 of 1 van het vorige karakter.

  • .: Matcht elk karakter één keer.

  • |: Of. Matcht het ene of het andere.

  • (): Groepering. Matcht de tekst tussen de haakjes.

  • {n}: Matcht precies n keer het vorige karakter.

  • [a-z]: Matcht één karakter uit de opgegeven reeks (in dit geval een kleine letter in het alfabet).

  • ^[0-9]: Matcht een regel die begint met een cijfer.

Voorbeelden:

gebruiker@ubuntu:~$ grep -E "^[0-9]" boek.txt # Toont regels die beginnen met een cijfer gebruiker@ubuntu:~$ grep -E "[a-zA-Z]" boek.txt # Toont regels die een kleine letter en daarna een hoofdletter bevatten gebruiker@ubuntu:~$ grep "Hall*" boek.txt # Toont regels waar "Hal" in staat en daarna 0 of meer "l" karakters staan gebruiker@ubuntu:~$ grep "H." boek.txt # Toont regels waar "H" in staat en daarna 1 willekeurig karakter gebruiker@ubuntu:~$ grep -E "Hallo|Heyo" boek.txt # Toont regels waar "Hallo" of "Heyo" in staat gebruiker@ubuntu:~$ grep "H[a-z]?" boek.txt # Toont regels waar "H" in staat en daarna 0 of 1 kleine letter gebruiker@ubuntu:~$ grep "P{3}" boek.txt # Toont regels waar "P" precies 3 keer in staat gebruiker@ubuntu:~$ grep -E "H(allo|eyo)" boek.txt # Toont regels waar "H" in staat en daarna "allo" of "eyo"

Output filteren

tee leest de input en schrijft deze naar de output.

Het is anders dan andere manieren om input te schrijven, want het stuurt de stdin verder naar de stdout, waardoor je het kan gebruiken met pipes.

gebruiker@ubuntu:~$ tail -5 lange_tekst.txt | tee laatste_regels.txt | tail -2 53 54 gebruiker@ubuntu:~$ cat laatste_regels.txt 50 51 52 53 54

Het is ook handig als je sudo nodig hebt voor naar een bestand te schrijven.

gebruiker@ubuntu:~$ echo "Dit is een test" | tee /testfile tee: /testfile: Permission denied gebruiker@ubuntu:~$ echo "Dit is een test" | sudo tee /testfile Dit is een test gebruiker@ubuntu:~$ cat /testfile Dit is een test

Om toe te voegen aan een bestand in de plaats van te overschrijven kan je -a gebruiken.

Het commando cut kan output scheiden.

gebruiker@ubuntu:~$ cat tekst 1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 gebruiker@ubuntu:~$ cut -d ',' -f1 tekst 1 6 11

Hier is -d ',' de "delimiter". Dat is het punt waar de tekst opgesplitst wordt.

-f1 zegt welk veld het moet tonen. In dit geval het eerste.

Het commando sort kan output sorteren.

gebruiker@ubuntu:~$ cat tekst 3 1 2 4 5 gebruiker@ubuntu:~$ sort tekst 1 2 3 4 5

Je kan het ook met pipes gebruiken.

gebruiker@ubuntu:~$ ls | sort file.txt folder test.txt

Het commando uniq filtert dubbele regels uit de output.

gebruiker@ubuntu:~$ cat tekst 1 2 2 3 4 4 5 gebruiker@ubuntu:~$ uniq tekst 1 2 3 4 5

Als de dubbele regels niet naast elkaar staan moet je eerst sort gebruiken.

gebruiker@ubuntu:~$ cat tekst 1 2 3 2 4 5 4 gebruiker@ubuntu:~$ sort tekst | uniq 1 2 3 4 5

Het commando wc telt het aantal regels, woorden en karakters in de output.

gebruiker@ubuntu:~$ wc tekst 7 10 40 tekst gebruiker@ubuntu:~$ wc -l tekst 7 tekst gebruiker@ubuntu:~$ wc -w tekst 10 tekst gebruiker@ubuntu:~$ wc -c tekst 40 tekst

-l staat voor "lines", -w betekent "words" en -c is "characters".

Dit werkt natuurlijk ook met pipes.

gebruiker@ubuntu:~$ ls | wc -l 3

Zo kan je bijvoorbeeld het aantal bestanden en folders zien.

Output veranderen

Het commando tr kan gebruikt worden om de output te veranderen.
Het staat voor "translate" en kan gebruikt worden om karakters te vervangen of te verwijderen.

gebruiker@ubuntu:~$ echo "hallo wereld" | tr 'a' 'x' hxllo wereld

Het werkt ook met regex.

gebruiker@ubuntu:~$ echo "hallo wereld" | tr 'a-z' 'A-Z' HALLO WERELD

Je kan ook meerdere karakters tegelijk vervangen.

gebruiker@ubuntu:~$ echo "hallo wereld" | tr 'aeiou' 'AEIOU' hAllO wErEld

Er zijn een paar handige argumenten die je kan gebruiken:

  • -d: Verwijdert de opgegeven karakters.

  • -s: Vervangt opeenvolgende karakters door één karakter.

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

Een ander commando dat je kan gebruiken is sed.
Dit staat voor "stream editor" en kan gebruikt worden om tekst te vervangen, toe te voegen of te verwijderen.

gebruiker@ubuntu:~$ echo "hallo wereld" | sed 's/hallo/hey/' hey wereld

Alleen het eerste voorkomen van "hallo" wordt vervangen. Je kan ook alle voorkomen van "hallo" vervangen met de g optie:

gebruiker@ubuntu:~$ echo "hallo hallo wereld" | sed 's/hallo/hey/g' hey hey wereld

Om sed hoofdletter ongevoelig te maken kan je de i optie toevoegen:

gebruiker@ubuntu:~$ echo "Hallo wereld" | sed 's/hallo/hey/i' hey wereld

Je kan ook meerdere commando's tegelijk uitvoeren met sed:

gebruiker@ubuntu:~$ echo "hallo wereld" | sed -e 's/hallo/hey/' -e 's/wereld/aarde/' hey aarde

De d optie kan gebruikt worden om regels te verwijderen:

gebruiker@ubuntu:~$ echo -e "hallo\nwereld" | sed '/wereld/d' hallo

Commando's & Terminologie

Commando

Uitleg

nano

Tekstverwerker voor de CLI.

tac

Toont de inhoud van een bestand van onder naar boven.

head

Toont de eerste 10 regels van een bestand.

tail

Toont de laatste 10 regels van een bestand.

less

Toont de inhoud van een bestand deel per deel.

more

Toont de inhoud van een bestand deel per deel, maar is minder krachtig dan less.

grep

Zoekt naar tekst in een bestand en toont de regels die overeenkomen.

tee

Leest de input en schrijft deze naar de output, kan gebruikt worden met pipes.

cut

Scheidt output op basis van een delimiter.

sort

Sorteert de output.

uniq

Filtert dubbele regels uit de output.

wc

Telt het aantal regels, woorden en karakters in de output.

tr

Vervangt of verwijdert karakters in de output.

sed

Vervangt, voegt toe of verwijdert tekst in de output.

Term

Uitleg

Regex

Een manier om patronen te zoeken in tekst.

Delimiter

Het punt waar de tekst opgesplitst wordt.

Studeren

Hoe sla je een bestand op in nano?

Met de shortcut Ctrl+s.

Hoe sluit je nano af?

Met de shortcut Ctrl+x.

Hoe bekijk je de inhoud van een bestand van onder naar boven?

Via het commando tac.

Welk commando toont de eerste 10 regels van een bestand?

Het commando head.

Welk commando wordt gebruikt als je een manpage opent?

Het commando less.

Hoe zoek je naar een specifiek woord in een bestand of output?

Met het commando grep.

Wat betekent [a-z] in regex?

Het matcht één karakter uit de opgegeven reeks (in dit geval een kleine letter in het alfabet).

Wat doet + in regex?

Het matcht 1 of meer van het vorige karakter.

Wat is het nut van het commando tee?

Het leest de input en schrijft deze naar de output, waardoor je het kan gebruiken met pipes en sudo.

Wat doet het commando cut?

Het scheidt output op basis van een delimiter.

Wat doet het commando sort?

Het sorteert de output.

Wat doet het commando uniq?

Het filtert dubbele regels uit de output.

Wat doet het commando wc?

Het telt het aantal regels, woorden en karakters in de output of in een bestand.

Wat doet het commando tr?

Het vervangt of verwijdert karakters in de output.

Wat doet het commando sed?

Het vervangt, voegt toe of verwijdert tekst in de output.

Wat doet sed met s/w/p/?

Het vervangt de eerste "w" in de regel met "p".

Last modified: 04 August 2025