▷ Come usare il comando SED in Linux - ESEMPI

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.txt
Passo 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.txt
Passaggio 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.txt
In 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.txt 
In 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.txt
Se vogliamo che non faccia distinzione tra maiuscole e minuscole, aggiungeremo la "i":
 sed -n 's / task / action / gpi' Solvetic.txt
Passaggio 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.txt
L'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.txt
Vediamo 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 / passwd
Un'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.txt
Per 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.txt
Elenchiamo 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.

wave wave wave wave wave