Linux è un sistema pieno di comandi in cui ognuno svolge un ruolo essenziale nel comportamento di determinate attività, siano esse utente, oggetto o gestione del supporto, ogni comando ha la sua partecipazione in Linux e uno di questi comandi è Sed di cui parleremo a Solvetic nei dettagli.
Qual è il comando sed in Linux?Il comando sed è letteralmente un editor di flusso che possiamo usare per modificare lavori sul testo con funzioni di base in un flusso di input da un file o input da una pipeline, se applicabile.
A differenza di altri editor di testo, con sed è possibile filtrare il testo in una pipeline mentre andiamo sul contenuto selezionato.
VantaggioI vantaggi dell'utilizzo di sed su Linux sono:
- Possiamo selezionare il testo
- Siamo in grado di sostituire il testo
- Aggiungi linee al testo
- Possiamo rimuovere le righe dal testo
- Consente di modificare o conservare un file originale
La sintassi generale per l'utilizzo di sed è la seguente:
sed OPZIONI… [SCRIPT] [INPUT_FILE…]Impareremo alcuni modi per utilizzare questo comando su Linux.
1. Come usare il comando SED in Linux
Uso di base di sedPer questo esempio useremo "echo" per vedere come il comando sed può sostituire parte del testo inserito, inseriamo:
eco solvitico | sed 's / vitic / vetic /'In questo caso stiamo dicendo a sed di sostituire la parola "vitic" con "vetic", quando si preme Invio questo sarà il risultato:
INGRANDIRE
Vediamo che il cambio è automatico.
2. Selezione del testo con il comando SED Linux
Passo 1
In questo caso avremo un file di testo che è ospitato sul desktop:
INGRANDIRE
Ora useremo la seguente riga:
meno Solvetic.txtPasso 2
Quando si preme Invio questo sarà il risultato:
INGRANDIRE
Con sed è possibile selezionare alcune righe del file, per questo dobbiamo indicare le righe iniziale e finale dell'intervallo da selezionare, ad esempio se vogliamo estrarre le righe da due a sette eseguiamo:
sed -n '2,7p' Solvetic.txtPassaggio 3
Vedremo quanto segue:
INGRANDIRE
Dobbiamo tenere presente la virgola negli intervalli da assegnare (2,7), il parametro p indica che significa "stampa righe corrispondenti", con questo il comando sed stamperà tutte le righe di quell'intervallo e il -n (quiet ) si occupa di non visualizzare il testo che non corrisponde a quell'intervallo.
Passaggio 4
Possiamo utilizzare il parametro -e (espressione) per effettuare selezioni multiple, ad esempio:
sed -n -e '1,2p' -e '5,6p' Solvetic.txt
INGRANDIRE
Passaggio 5
Con sed è possibile selezionare la linea di partenza, quindi indichiamo quale deve essere attraversata nel file e per stampare le linee alternate, ad esempio, inseriamo:
sed -n '1 ~ 3p' Solvetic.txtIn questo caso il primo numero si riferisce alla linea di partenza e il secondo numero indica a sed quali righe verranno visualizzate dopo la linea di partenza:
INGRANDIRE
Passaggio 6
Un altro uso di sed è la capacità di selezionare le righe in cui si trovano i modelli di testo corrispondenti, questo se non sappiamo da dove proviene il numero di riga, possiamo eseguire quanto segue:
sed -n '/ Esegui / p' Solvetic.txt
INGRANDIRE
Vedremo le righe che iniziano con quel termine.
3. Come creare sostituzioni con SED Linux
Passo 1
Nella parte base abbiamo visto come sostituire il testo usando sed, lì abbiamo usato il parametro -s (sostituzione). Quindi la prima stringa indica il modello di ricerca e la seconda si riferisce al testo con cui verrà sostituita.
sed -n 's / task / action / p' Solvetic.txtIn questo esempio sostituiamo "tasks" con "actions":
INGRANDIRE
Passo 2
Con il parametro p sed si ferma automaticamente dopo la prima corrispondenza, per eseguire una ricerca globale e apportare la modifica in generale dobbiamo aggiungere "g":
sed -n 's / task / action / gp' Solvetic.txtSe vogliamo che non faccia distinzione tra maiuscole e minuscole, aggiungeremo la "i":
sed -n 's / task / action / gpi' Solvetic.txtPassaggio 3
E' possibile creare restrizioni sulle sostituzioni solo ad alcune sezioni del file, prima di tutto elenchiamo le righe da analizzare:
sed -n '1,3p' Solvetic.txt
INGRANDIRE
Passaggio 4
Vediamo quanto segue, possiamo trovare dove ci sono due spazi e sostituirli con uno:
sed -n '1.3 s / * / / gp' Solvetic.txtL'asterisco (*) rappresenta zero o più del carattere selezionato in precedenza.
Passaggio 5
Puoi ridurre il modello di ricerca a un singolo spazio con il seguente comando:
sed -n '1.3 s / * / / gp' Solvetic.txtVediamo la differenza nei risultati:
INGRANDIRE
In quest'ultimo caso, l'asterisco corrisponde a zero o più del carattere precedente, questo fa sembrare ogni carattere diverso da uno "spazio zero" applicando il comando.
Passaggio 6
Per effettuare due o più sostituzioni contemporaneamente eseguiamo:
sed -n -e 's/eseguito/applicato/gip' -e 's/attività/azioni/gip' Solvetic.txt
INGRANDIRE
4. Opzioni di sostituzione SED su Linux
Possiamo usare sed anche per estrarre i nomi dei file dal sistema, in questo caso dobbiamo tenere presente che ogni oggetto deve corrispondere a un pattern di ricerca (sottoespressioni) che può essere numerato (fino ad un massimo di nove elementi).
Passo 1
Questi numeri possono quindi essere utilizzati per fare riferimento a sottoespressioni specifiche.
La sottoespressione deve essere racchiusa tra parentesi [()] e le parentesi devono essere precedute da una barra rovesciata (\) in modo che non vengano rilevate come un carattere normale, ad esempio:
sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd
INGRANDIRE
Le variabili usate in questo comando sono
- sed 's /: indica il comando sed e l'inizio dell'espressione di sostituzione.
- \ (: racchiudere la sottoespressione, preceduta da una barra rovesciata
- [^:] *: è la prima sottoespressione del termine di ricerca che contiene un gruppo tra parentesi, il segno caret (^) significa "no" quando usato in un gruppo, cioè qualsiasi carattere che non sia due punti
- \): la parentesi chiusa [)] con una barra rovesciata
- .*: è la seconda sottoespressione di ricerca che indica "qualsiasi carattere e qualsiasi numero di questi".
- / \ 1: è la parte sostitutiva dell'espressione che contiene un numero 1 preceduto da una barra rovesciata (\) e indica che il testo corrisponde alla prima sottoespressione
- / ': termina il comando sed
Passo 2
Con il comando precedente abbiamo cercato qualsiasi stringa di caratteri che non contenga i due punti, poiché ogni riga del file /etc/passwd inizia con il nome utente che termina con i due punti. Possiamo sostituire quel valore isolando il nome utente con il seguente comando:
sed 's / \ ([^:] * \) \ (. * \) / \ 2 /' / etc / passwd
INGRANDIRE
Passaggio 3
Possiamo visualizzare solo i nomi utente con il seguente comando:
sed 's /:.*// "/ etc / passwdUn'altra opzione con sed è usare il parametro c (cut - cut) per sostituire il testo in un file, ad esempio:
sed '/ Linux / c Sistema operativo Linux' Solvetic.txt
INGRANDIRE
5. Inserisci righe e testo con SED in Linux
Passo 1
Un altro compito da usare con sed è inserire nuove righe e testo in un file, in questo caso abbiamo i seguenti dati:
INGRANDIRE
Passo 2
Possiamo inserire una nuova riga specificando sotto la quale verrà inserita:
sed '/ Ub / a -> Inserito!' Solvetic.txt
INGRANDIRE
Passaggio 3
È anche possibile utilizzare il comando Inserisci (i) per inserire una nuova riga sopra la corrispondenza:
sed '/ Wi/i -> Inserito!' Solvetic.txt
INGRANDIRE
Passaggio 4
Possiamo utilizzare il segno e commerciale (&) per aggiungere nuovo testo a una riga corrispondente nel file, eseguiamo:
sed 's /.*/--> Inserito & /' Solvetic.txt
INGRANDIRE
6. Come eliminare una riga con SED Linux
Per questo caso dobbiamo utilizzare il parametro d (delete), per eliminare ad esempio la seconda riga che eseguiamo:
sed '2d' Solvetic.txt
INGRANDIRE
Se necessario, possiamo rimuovere un intervallo:
sed '1,4d' Solvetic.txtPer rimuovere le righe al di fuori di un intervallo, dobbiamo utilizzare un punto esclamativo (!) Come segue:
sed '2,4! d' Solvetic.txt
7. Come salvare le modifiche con SED in Linux
Passo 1
Per applicare le modifiche apportate, è possibile utilizzare l'opzione In-place (-i) in modo che sed scriva le modifiche sul file originale, ma per una maggiore sicurezza possiamo aggiungere un'estensione di backup come segue (abbiamo eseguito il backup le righe contenenti la parola Wi):
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txtElenchiamo il contenuto:
cat Solvetic.txt.bak
INGRANDIRE
Passo 2
È possibile reindirizzare l'output su un nuovo file con gli stessi risultati:
sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt
INGRANDIRE
Con sed possiamo lavorare con i file in modo completamente completo in Linux poiché abbiamo visto ciascuna delle sue opzioni di utilizzo.