From 593685192f6e85aeeef27ad42f0b5ccc6fc16dc0 Mon Sep 17 00:00:00 2001
From: piccihud <piccihud@email>
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