From 593685192f6e85aeeef27ad42f0b5ccc6fc16dc0 Mon Sep 17 00:00:00 2001 From: piccihud Date: Thu, 2 Jan 2025 16:45:18 +0100 Subject: [PATCH] sed e grep --- 101/022_grep_sed.md | 95 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/101/022_grep_sed.md b/101/022_grep_sed.md index 3ac3966..f19d6d1 100644 --- a/101/022_grep_sed.md +++ b/101/022_grep_sed.md @@ -4,4 +4,99 @@ Due comandi sono particolarmente adatti per manipolare file e dati di testo usan ## 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` \ No newline at end of file