Merge branch 'main' of git.ilnostropianetaselvaggio.it:dado/lpic
This commit is contained in:
commit
7d3449d95c
@ -1,5 +1,9 @@
|
|||||||
|
# Espressioni regolari
|
||||||
|
|
||||||
Le *espressioni regolari* o `regex` sono costituite da sequenze di caratteri che costituiscono un modello generico utilizzato per individuare una sequenza corrispondente in una stringa di dimensioni maggiori.
|
Le *espressioni regolari* o `regex` sono costituite da sequenze di caratteri che costituiscono un modello generico utilizzato per individuare una sequenza corrispondente in una stringa di dimensioni maggiori.
|
||||||
|
|
||||||
|
Esistono due forme di espressioni regolari: *basic* e *extended*.
|
||||||
|
|
||||||
Un *atomo*, l'elemento base di una regex, e' un carattere, che puo' avere o meno un significato speciale. Alcuni caratteri con un significato speciale:
|
Un *atomo*, l'elemento base di una regex, e' un carattere, che puo' avere o meno un significato speciale. Alcuni caratteri con un significato speciale:
|
||||||
|
|
||||||
- `.`: il carattere corrisponde a qualsiasi carattere
|
- `.`: il carattere corrisponde a qualsiasi carattere
|
||||||
@ -12,4 +16,21 @@ Un altro atomo sono le `[]`, denominato *bracket expression* (espressione tra []
|
|||||||
|
|
||||||
Per specificare i caratteri a cui l'atomo non deve corrispondere, l'elenco deve iniziare con `^`, come in [^1b].
|
Per specificare i caratteri a cui l'atomo non deve corrispondere, l'elenco deve iniziare con `^`, come in [^1b].
|
||||||
|
|
||||||
E' possibile anche specificare degli intervalli. Per esempio, `[0-9]` corrisponde alle cifre da 0 a 9 e `[a-z]` a qualsiasi lettera minuscola.
|
E' possibile anche specificare degli intervalli. Per esempio, `[0-9]` corrisponde alle cifre da 0 a 9 e `[a-z]` a qualsiasi lettera minuscola.
|
||||||
|
|
||||||
|
## Quantificatori
|
||||||
|
|
||||||
|
I quantificatori `*` hanno la stessa funzione sia nelle RE di base che in quelle estese: rappresentano un carattere letterale se appaiono all'inizio delle RE o se preceduto da `\`. Nelle RE di base, `+` e `?` sono, per la maggioranza dei casi, caratteri letterali.
|
||||||
|
|
||||||
|
- `*`: l'atomo (o il gruppo di caratteri) può comparire zero o più volte. Ad esempio, l'espressione `a*` corrisponde a "", "a", "aa", "aaa", e così via.
|
||||||
|
- `+`: l'atomo deve comparire una o più volte. Ad esempio, l'espressione `a+` corrisponde a "a", "aa", "aaa", ma non corrisponde a "" (stringa vuota).
|
||||||
|
- `?`: l'atomo può comparire zero o una volta
|
||||||
|
|
||||||
|
## Limiti
|
||||||
|
|
||||||
|
Un *buond* o limite permette all'utente di specificare il numero di volte che un atomo può apparire.
|
||||||
|
|
||||||
|
- `{n}`: l'atomo deve comparire esattamente n volte. Ad esempio, a{3} corrisponde a "aaa"
|
||||||
|
- `{n,}`: L'atomo deve comparire almeno n volte. Ad esempio, a{2,} corrisponde a "aa", "aaa", "aaaa", e così via
|
||||||
|
- `{n,m}`: L'atomo può comparire da n a m volte. Ad esempio, xyz{2,4} corrisponde a "xyzz", "xyzzz" e "xyzzzz"
|
||||||
|
|
||||||
|
102
101/022_grep_sed.md
Normal file
102
101/022_grep_sed.md
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
# grep e sed
|
||||||
|
|
||||||
|
Due comandi sono particolarmente adatti per manipolare file e dati di testo usando le RE: `grep` e `sed`.
|
||||||
|
|
||||||
|
## grep
|
||||||
|
|
||||||
|
Il comando `grep` permette di ricercare pattern nei file di testo, utilizzando le RE. Il carattere pipe `|` e' usato per reindirizzare l'output di un comando direttamente allo stin di grep.
|
||||||
|
|
||||||
|
Alcune importanti opzioni:
|
||||||
|
|
||||||
|
- `-c` o `--count`: invece di visualizzare i risultati di ricerca, visualizza solo il conteggio del numero di volte in cui si verifica una determinata corrispondenza
|
||||||
|
- `-i`: nessuna distinzione tra maiuscole o minuscole
|
||||||
|
- `-n`: mostra il numero di riga
|
||||||
|
- `-v` o `--invert-match`: seleziona solo le righe che non corrispondono alla ricerca
|
||||||
|
- `-H`: stampa anche il nome del file
|
||||||
|
- `-1`: viene inclusa una riga prima e una riga dopo la corrispondenza trovata. Queste righe aggiuntive sono chiamate *righe di contesto*.
|
||||||
|
- `-E` o `--extended-regexp`: equivalente al comando `egprep`, permette di utilizzare le funzionalita' delle RE estese.
|
||||||
|
|
||||||
|
## sed
|
||||||
|
|
||||||
|
Permette di modificare i dati basati su testo in modo non interattivo. La sua sintassi di base:
|
||||||
|
|
||||||
|
- `sed -f SCRIPT`, quando le istruzioni sono memorizzate in un file SCRIPT
|
||||||
|
- `sed -e COMMANDS`
|
||||||
|
|
||||||
|
### Esempi pratici
|
||||||
|
|
||||||
|
Partendo dal comando:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
> factor `seq 12`
|
||||||
|
1:
|
||||||
|
2: 2
|
||||||
|
3: 3
|
||||||
|
4: 2 2
|
||||||
|
5: 5
|
||||||
|
6: 2 3
|
||||||
|
7: 7
|
||||||
|
8: 2 2 2
|
||||||
|
9: 3 3
|
||||||
|
10: 2 5
|
||||||
|
11: 11
|
||||||
|
12: 2 2 3
|
||||||
|
```
|
||||||
|
|
||||||
|
- Per **eliminare** la prima riga:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
> factor `seq 12` | sed 1d
|
||||||
|
2: 2
|
||||||
|
3: 3
|
||||||
|
4: 2 2
|
||||||
|
5: 5
|
||||||
|
6: 2 3
|
||||||
|
7: 7
|
||||||
|
8: 2 2 2
|
||||||
|
9: 3 3
|
||||||
|
10: 2 5
|
||||||
|
11: 11
|
||||||
|
12: 2 2 3
|
||||||
|
```
|
||||||
|
|
||||||
|
- Per **eliminare** un *intervallo* di righe
|
||||||
|
|
||||||
|
```bash
|
||||||
|
> factor `seq 12` | sed 1,7d
|
||||||
|
8: 2 2 2
|
||||||
|
9: 3 3
|
||||||
|
10: 2 5
|
||||||
|
11: 11
|
||||||
|
12: 2 2 3
|
||||||
|
```
|
||||||
|
|
||||||
|
- E' possibile utilizzare piu' di un istruzione nella stessa esecuzione, separata da un `;`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
> factor `seq 12` | sed '1,7d;12d'
|
||||||
|
8: 2 2 2
|
||||||
|
9: 3 3
|
||||||
|
10: 2 5
|
||||||
|
11: 11
|
||||||
|
```
|
||||||
|
|
||||||
|
- Qualsiasi cosa inserita tra front-slash (`/`) e' considerata una RE. Invece di eliminare una riga, sed puo' sostituirla con un testo dato:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
> factor `seq 12` | sed '/:.*2/c REMOVED'
|
||||||
|
1:
|
||||||
|
REMOVED
|
||||||
|
3: 3
|
||||||
|
REMOVED
|
||||||
|
5: 5
|
||||||
|
REMOVED
|
||||||
|
7: 7
|
||||||
|
REMOVED
|
||||||
|
9: 3 3
|
||||||
|
REMOVED
|
||||||
|
11: 11
|
||||||
|
REMOVED
|
||||||
|
```
|
||||||
|
|
||||||
|
- L'istruzione piu' usata: `s/FIND/REPLACE`. Solo la prima occorrenza verra' sostituita, a meno che non il flag `g` non sia posto al termina dell'istruzione: `s/FIND/REPLACE/g`
|
7
101/023_file_system_partizionamento.md
Normal file
7
101/023_file_system_partizionamento.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
## Introduzione
|
||||||
|
|
||||||
|
Su qualsiasi OS, un disco deve essere partizionato, prima di poter essere utilizzato. Una *partizione* e' un sottoinsieme logico di un disco fisico; le informazioni sulle partizioni sono archiviate in una *tabella delle partizioni*.
|
||||||
|
|
||||||
|
Su Linux, ogni partizione e' assegnata a una directory sotto `/dev`, come `/dev/sda1`.
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user