Specifica Progetto Appelli Settembre/Ottobre 2018

Descrizione

Sviluppare una applicazione di sistema Unix/Linux chiamata swordx che sia in grado di leggere un insieme di file (di testo) da una o più sorgenti e che produca in output un tile di testo contenente la lista delle parole (ordinate in ordine alfabetico) che occorrono nei file letti con la relativa occorrenza. Per parola si intende ogni sequenza costituita da soli caratteri alfanumerici (caratteri o lettere). Le parole non sono sensibili al maiuscolo.

La sinossi del programma è:

swordx [options] [inputs]

Dove [inputs] è una sequenza di file e/o directory, mentre [options] sono una sequenza di parametri riportati sotto.

Dettagli

Feature 1

Il programma è in grado di trattare invocazioni del tipo:

swordx path/file

Il risultato dell'elaborazione è salvata nel file swordx.out salvato nella directory corrent.

Esempio: Ricevuto in input il file test.txt viene prodotto il seguente file swordx.out.

Feature 2

Come input può essere passata una directory:

swordx path/directory

In questo caso il file swordx.out conterrà le statistiche ottenute elaborando tutti i file (regolari) contenuti nella directory. Nell'analisi, quindi, vengono esclusi i link e le directory.

Feature 3

E' possibile richiamare swordx passando più input:

swordx <input1> <input2> … <inputn>

Viene generato un singolo file swordx.out contenente le statistiche collezionate.

Feature 4

E' possibile indicare il nome del file dove devono essere salvate le statistiche collezionate:

swordx –output <file> [inputs] swordx -o <file> [inputs]

Le statistiche collezionate vengono salvate nel file <file>.

Feature 5

E' possibile passare a swordx i seguenti parametri aggiuntivi:

  1. –help e -h: stampa a video l'help del programma;
  2. –recursive e -r: se viene passato questo argomento, nella collezione delle informazioni di una directory vengono seguite tutte le sottodirectory;
  3. –follow e -f: nell'elaborazione di una directory vengono seguiti i link;
  4. –explude <file> e -e <file>: <file> non viene considerato nell'elaborazione (questo parametro ha senso solo se si sta elaborando una directory);
  5. –alpha e -a: vengono considerate nella statistica solo le parole contenenti caratteri alfabetici;
  6. –min <num> e -m <num>: vengono considerate nella statistiche solo le parole con una lunghezza maggiore o uguale a <num>;
  7. –ignore <file> e -i <file>: <file> è un elenco di parole (una per riga) che vengono ignorate nella statistica;
  8. –sortbyoccurrency e -s: le parole vengono inserite nel file di output ordinate per numero di occorrenze.
  9. –log <file> e -l <file>: genera un file di log (identificato da <file>) dove viene riportate viene riportata, per ogni file analizzato viene riportata una riga della forma <name> cw iw time dove
    1. <name> è il nome del file analizzato;
    2. cw è il numero delle parole registrate;
    3. iw è il numero delle parole ignorate;
    4. time è il tempo necessario all'elaborazione del file.
Feature 6

Consentire di specificare valori parametri di input usando espressioni regolari.