Linux – Esercizi pratici su file e testo

Prof. ENRICO MELE

Creazione, manipolazione e ricerca in file di testo e CSV
Esercizi guidati per il laboratorio di Sistemi e Reti
← Torna alla teoria Linux
Come usare questa pagina in laboratorio:
1) Apri un terminale Linux (o WSL).
2) Crea una cartella di lavoro, ad esempio: mkdir laboratorio_linux && cd laboratorio_linux.
3) Copia e incolla i comandi degli esercizi in ordine, osservando ogni volta il contenuto dei file con cat, head, tail, column.

Esercizio 1 – Creare un file di testo e fare il primo backup

Obiettivi: creare un file di testo, aggiungere righe, visualizzarlo e fare un semplice backup.

1. Creiamo il file studenti.txt
echo "Mario Rossi 3INF 7.5" > studenti.txt
echo "Luca Bianchi 4INF 6.8" >> studenti.txt
echo "Sara Verdi 3INF 8.2" >> studenti.txt
echo "Paolo Neri 5INF 7.9" >> studenti.txt
2. Visualizziamo il contenuto
cat studenti.txt
3. Numeriamo le righe
nl studenti.txt
4. Creiamo un file di backup
cat studenti.txt > backup_studenti.txt

Domande per la classe: cosa succede se rilancio i comandi echo ...? E se rilancio il backup con > rispetto a >>?

Esercizio 2 – Creare un file CSV realistico

Obiettivi: creare un file CSV con separatore ; e visualizzarlo in modo leggibile.

1. Creiamo il file studenti.csv
echo "cognome;nome;classe;media" > studenti.csv
echo "Rossi;Marco;3INF;7.2" >> studenti.csv
echo "Bianchi;Luca;4INF;6.5" >> studenti.csv
echo "Verdi;Sara;3INF;8.1" >> studenti.csv
echo "Neri;Paolo;5INF;7.9" >> studenti.csv
echo "Costa;Anna;3INF;7.0" >> studenti.csv
echo "Greco;Elisa;4INF;8.3" >> studenti.csv
2. Visualizziamo il CSV

Se disponibile, usiamo column per avere le colonne allineate:

column -t -s";" studenti.csv

In alternativa:

cat studenti.csv

Esercizio 3 – Estrazione di colonne con cut

Obiettivi: usare cut per estrarre colonne dal CSV e salvare risultati in file diversi.

1. Estrarre cognome e nome
cut -d";" -f1,2 studenti.csv
2. Salvare l'elenco dei nomi in un file
cut -d";" -f1,2 studenti.csv > elenco_nomi.txt
3. Estrarre cognome, nome e classe degli studenti
cut -d";" -f1,2,3 studenti.csv

Variante: prova a cambiare l'ordine delle colonne nell'opzione -f e osserva l'effetto.

Esercizio 4 – Filtrare righe con grep

Obiettivi: cercare righe che contengono una certa classe o una certa media, filtrare ed escludere righe.

1. Mostrare solo gli studenti di 3INF
grep ";3INF;" studenti.csv
2. Mostrare solo gli studenti di 4INF
grep ";4INF;" studenti.csv
3. Cercare tutte le medie che iniziano per 8.x
grep ";8\." studenti.csv
4. Escludere gli studenti di 3INF
grep -v ";3INF;" studenti.csv
5. Cercare 'marco' ignorando maiuscole/minuscole
grep -i "marco" studenti.csv

Esercizio 5 – Prime e ultime righe: head e tail

Obiettivi: usare head e tail per visualizzare solo l’inizio o la fine di un file.

1. Prime 3 righe del CSV
head -3 studenti.csv
2. Ultime 2 righe del CSV
tail -2 studenti.csv
3. Saltare l'intestazione e vedere tutto il resto
tail -n +2 studenti.csv
4. Saltare l'intestazione e vedere solo i primi 4 studenti
tail -n +2 studenti.csv | head -4

Esercizio 6 – Ordinare con sort

Obiettivi: ordinare il CSV per cognome e per media crescente/decrescente.

1. Ordinare alfabeticamente per cognome
sort -t";" -k1,1 studenti.csv
2. Ordinare per media (colonna 4) in ordine crescente
sort -t";" -k4,4n studenti.csv
3. Ordinare per media in ordine decrescente
sort -t";" -k4,4nr studenti.csv

Esercizio 7 – Contare righe con wc

Obiettivi: usare wc per contare righe e combinare wc con grep.

1. Contare tutte le righe del CSV
wc -l studenti.csv
2. Contare solo gli studenti di 3INF
grep ";3INF;" studenti.csv | wc -l

Nota: il conteggio include solo le righe che contengono ;3INF; (non l’intestazione).

Esercizio 8 – Pipeline complete (grep, sort, cut)

Obiettivi: combinare più comandi con pipe per ottenere risultati complessi.

1. Classifica degli studenti di 3INF per media decrescente
grep ";3INF;" studenti.csv | sort -t";" -k4,4nr > 3INF_classifica.txt
2. Estrarre solo cognome e media degli studenti con media ≥ 8
grep ";8\." studenti.csv | cut -d";" -f1,4
3. Salvare gli studenti eccellenti (media ≥ 8) in un file
grep ";8\." studenti.csv > eccellenti.csv

Esercizio 9 – File “grande” con numeri

Obiettivi: generare un file con molte righe e usare head, tail, grep.

1. Creare un file con i numeri da 1 a 200
seq 1 200 > numeri.txt
2. Prime 10 righe
head -10 numeri.txt
3. Ultime 5 righe
tail -5 numeri.txt
4. Ricerca di tutti i numeri che contengono il numero 3
grep "3" numeri.txt

Esercizio 10 – Mini sfida di riepilogo

Obiettivo: usare in autonomia echo, grep, cut, sort, head, tail, wc.

  1. Crea un nuovo file CSV chiamato mialclasse.csv con almeno 10 studenti della tua classe (cognome;nome;classe;media).
  2. Estrai solo cognome e nome e salvali in mialclasse_nomi.txt.
  3. Mostra solo gli studenti con media maggiore o uguale a 8.
  4. Crea una classifica della tua classe in ordine decrescente di media e salvala in mialclasse_classifica.txt.
  5. Conta quanti studenti hanno media maggiore o uguale a 7.5.

Suggerimento: ogni punto si può risolvere combinando i comandi visti negli esercizi precedenti.