Linux (for data Scientists)
HOGENT toegepaste
informatica
Thomas Parmentier, Andy Van Maele, Bert Van Vreckem, Jan Willem
2025-2026
2 gangbare manieren om tekstpatronen te definiëren:
man 7 globman 7 regexCommando uitvoeren op meer dan 1 bestand?
cp a.txt b.doc c.jpg /tmpcp /media/usbstick/*.jpg ~/Pictures/| Patroon | Betekenis | Voorbeeld |
|---|---|---|
? |
Eén willekeurig teken | ls /bin/?? |
* |
Willekeurige string (ook leeg) | ls *.txt,
ls a* |
[...] |
Elk teken opgesomd tussen
[] |
ls /bin/[A+_]* |
[A-Z] |
Van A t/m Z | ls /bin/*[A-D1-3] |
[!...] |
Niet 1 v/d opgesomde tekens | ls /bin/[!a-z]* |
ls *.md: toon alle Markdown-bestandenls [A-Z]*.md: toon alle Markdown-bestanden waarvan de
naam begint met een hoofdletterls [0-9][0-9]-*.md: toon alle Markdown bestanden
waarvan de naam begint met twee cijfers gevolgd door een streepje
ls /usr/bin/[!a-z]*: toon alle commando’s die
niet met een kleine letter beginnen
/usr/bin/[, /usr/bin/7z, enz.ls -d /usr/share/man/man?: toon alle directories onder
/usr/share/man, gevolgd door nog een enkel karakter
man1, man7, mannapt list --installed 'lib*': toon alle geïnstalleerde
packages met programmabibliothekenGebruik nooit regex om bestanden te selecteren!
In dit soort gevallen is find overbodig:
$ ip -br a | awk '{ print $3 }'
127.0.0.1/8
10.0.2.15/24
awk -F: '{print $1,$3}' /etc/passwd
{action} → Voer uit voor elke lijn/regex/ { action } → Voer enkel uit als regex
overeenkomtcondition { action } → Voer enkel uit als voorwaarde
voldaan is{ print } wordt verondersteldvb. awk -F: '$3 >= 1000' /etc/passwd
BEGIN { ... } → Voer 1x uit, vóór verwerken inputEND { ... } → Voer 1x uit, na verwerken inputBereken de som van (alle getallen in) kolom 3
s=0 geïmpliceerd!$3 wordt automatisch geïnterpreteerd als getal!FNR Huidige lijnnummerFS Field Separator (equivalent van optie
-F)NF Number Fields (aantal kolommen)NR Number of Records (aantal lijnen)OFS Output Field separatorPrint de laatste kolom:
awk -F: '{print $NF}' /etc/passwd
Bereken het gemiddelde van kolom 3 in een CSV-bestand:
Voorbeeld: users.awk
Uitvoeren met:
$ chmod +x users.awk
$ ./users.awk < /etc/passwd
root 0
bin 1
...
osboxes 1000
Bereken de som van kolommen 2, 3 en 4:
Print de user shells in /etc/passwsd en tel
hoeveel elk voorkomt
jq is a lightweight and flexible command-line JSON processor.
curl -s 'https://api.github.com/repositories/5101141/commits?per_page=5' | jq
of: jq '.' (met . de identity
operator)
curl -s 'https://api.github.com/repositories/5101141/commits?per_page=5' | jq '.[0]'
(in de volgende voorbeelden: enkel het jq-commando)
jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
| binnen de
jq-expressie!.key haalt het key-veld op
.commit.messagejq '.[] | {message: .commit.message, name: .commit.committer.name}'
.[] geeft elk element van de array terug
[] er rond:jq '[.[] | {message: .commit.message, name: .commit.committer.name}]'
jq '[.[] | {message: .commit.message, name: .commit.committer.name, parents: [.parents[].html_url]}]'