15 Utili ‘sed’ Comando Tips and Tricks for Daily Linux System Administration Tasks

Ogni amministratore di sistema ha a che fare con i file di testo normale su base giornaliera. Sapere come visualizzare alcune sezioni, come sostituire le parole e come filtrare i contenuti da quei file sono abilità che devi avere a portata di mano senza dover fare una ricerca su Google.,

15 Utile ‘sed’ Comando Consigli e Trucchi per Linux

In questo articolo esaminiamo sed, il noto editor di flusso, e condividere i 15 consigli per utilizzarlo al fine di raggiungere gli obiettivi menzionati in precedenza, e di più.

Visualizzazione di un intervallo di righe di un documento

Strumenti come head e tail ci consentono di visualizzare la parte inferiore o superiore di un file. Cosa succede se abbiamo bisogno di visualizzare una sezione nel mezzo? Il seguente sed one-liner restituirà le linee da 5 a 10 da myfile.,txt:

# sed -n '5,10p' myfile.txt

Visualizzazione dell’intero file ad eccezione di un determinato intervallo

D’altra parte, è possibile che si desideri stampare l’intero file ad eccezione di un determinato intervallo. Per escludere le righe da 20 a 35 da myfile.txt, do:

# sed '20,35d' myfile.txt

Visualizzazione di linee e intervalli non consecutivi

È possibile che tu sia interessato a un insieme di linee non consecutive o in più di un intervallo. Visualizziamo le righe 5-7 e 10-13 da myfile.,txt:

# sed -n -e '5,7p' -e '10,13p' myfile.txt

Come puoi vedere, l’opzione -e ci consente di eseguire una determinata azione (in questo caso, linee) per ogni intervallo.

Sostituzione di parole o caratteri (sostituzione di base)

Per sostituire ogni istanza della parolaversion constory in myfile.,di ip route show e una pipeline:

# ip route show | sed 's/ */ /g'

Confrontare l’output del ip route show con e senza la pipeline:

Sostituire le Parole o i Caratteri nel File

Sostituzione di parole o caratteri all’interno di una gamma

Se siete interessati a sostituzione di parole all’interno di un range di linea (da 30 a 40, per esempio), si può fare:

# sed '30,40 s/version/story/g' myfile.txt

naturalmente, è possibile indicare una sola linea attraverso il suo corrispondente numero invece di un intervallo.,

Utilizzo di espressioni regolari – sostituzione avanzata) – I

A volte i file di configurazione vengono caricati con commenti. Anche se questo è certamente utile, può essere utile visualizzare solo le direttive di configurazione a volte se si desidera visualizzarle tutte a colpo d’occhio.

rimuovere le righe vuote o quelli che iniziano con # dal file di configurazione di Apache,:

# sed '/^#\|^$\| *#/d' httpd.conf

Il punto di inserimento segno seguita dal segno di numero (^#) indica l’inizio di una riga, mentre ^$ rappresenta le righe vuote., Le barre verticali indicano operazioni booleane, mentre la barra all’indietro viene utilizzata per sfuggire alle barre verticali.

In questo caso particolare, il file di configurazione di Apache ha linee con #’s non all’inizio di alcune righe, quindi *# viene utilizzato per rimuovere anche quelle.

Usando le espressioni regolari (sostituzione avanzata) – II

Per sostituire una parola che inizia con maiuscole o minuscole con un’altra parola, possiamo anche usare sed. Per illustrare, sostituiamo la parola zip o Zip con rar in myfile.,txt:

# sed 's/ip/rar/g' myfile.txt

Da non perdere: Usa Awk con espressioni regolari per filtrare il testo nei file

Visualizzando righe contenenti con un dato pattern

Un altro uso di sed consiste nel stampare le righe da un file che corrispondono a una data espressione regolare. Ad esempio, potremmo essere interessati a visualizzare le attività di autorizzazione e autenticazione che hanno avuto luogo il 2 luglio, come da /var/log/secure log in un server CentOS 7.,

In questo caso, il pattern da cercare è il 2 Luglio all’inizio di ogni riga:

# sed -n '/^Jul 1/ p' /var/log/secure
Visualizza Log (Linee) di Particolare Data

l’Inserimento di spazi nel file

Con sed, possiamo anche inserire spazi (righe vuote) per ogni riga non vuota in un file., Per inserire una riga vuota ogni altra riga nella LICENZA, un file di testo semplice, do:

# sed G myfile.txt

Per inserire due righe vuote, do:

# sed 'G;G' myfile.txt

Aggiungi una G maiuscola separata da un punto e virgola se vuoi aggiungere altre righe vuote. L’immagine seguente illustra l’esempio descritto in questo suggerimento:

Inserire Spazi nel File

Questo suggerimento può tornare utile se si desidera controllare una grande file di configurazione., L’inserimento di uno spazio vuoto ogni altra linea e la tubazione dell’uscita a meno si tradurrà in un’esperienza di lettura più amichevole.

Emulazione di dos2unix con editing in linea

Il programma dos2unix converte i file di testo dalla formattazione Windows/Mac a Unix / Linux, rimuovendo i caratteri di nuova riga nascosti inseriti da alcuni editor di testo utilizzati in quelle piattaforme. Se non è installato nel vostro sistema Linux, è possibile imitare la sua funzionalità con sed invece di installarlo.,

Nell’immagine a sinistra si possono vedere diverse DOS caratteri di nuova riga (^M), che sono stati successivamente rimossi con:

# sed -i 's/\r//' myfile.txt
Covert File di Testo da Windows a Linux

si Prega di notare che il -i opzione di indicare in-place editing. Quindi le modifiche non verranno restituite allo schermo, ma verranno salvate nel file.,

Nota: È possibile inserire caratteri di nuova riga DOS durante la modifica di un file nell’editor vim con Ctrl+VeCtrl+M.

Modifica e backup sul posto del file originale

Nel suggerimento precedente abbiamo usato sed per modificare un file ma non abbiamo salvato il file originale. A volte è una buona idea salvare una copia di backup del file originale per ogni evenienza.

Per fare ciò, indicare un suffisso che segue l’opzione-i (tra virgolette singole) da utilizzare per rinominare il file originale.,

Nel seguente esempio sostituiremo tutte le istanze di this o This (ignorando il caso) con quella in myfile.txt, e salveremo il file originale come myfile.txt.orig.

Infine, possiamo utilizzare diff utilità per identificare le differenze tra i due file:

# sed -i'.orig' 's/this/that/gi' myfile.txt
Usare sed la Modifica e la copia di Backup del File Originale

Commutazione delle coppie di parole

si supponga di disporre di un file contenente i nomi completi nel formato nome, cognome., Per elaborare adeguatamente il file, si consiglia di cambiare Cognome e nome.

Si può fare con la sed è piuttosto semplice:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt
Interruttore Parole nel File

Nell’immagine sopra possiamo vedere che, tra parentesi, essendo i caratteri speciali, devono essere sfuggito, così come i numeri 1 e 2.

Questi numeri rappresentano le espressioni regolari evidenziate (che devono apparire tra parentesi):

  1. 1 rappresenta l’inizio di ogni riga fino alla virgola.,
  2. 2 è un segnaposto per tutto ciò che è a destra della virgola alla fine della riga.

L’output desiderato è indicato nel formato SecondColumn (Cognome) + virgola + spazio + FirstColumn (Nome). Sentiti libero di cambiarlo in quello che desideri.

Sostituire le parole solo se viene trovata una corrispondenza separata

A volte sostituire tutte le istanze di una determinata parola, o poche a caso, non è esattamente ciò di cui abbiamo bisogno. Forse abbiamo bisogno di eseguire la sostituzione se viene trovata una corrispondenza separata.,

Ad esempio, potremmo voler sostituire start con stop solo se la parola servizi si trova nella stessa riga. In questo scenario, ecco cosa succederà:

We need to start partying at work,but let’s remember to start all services first.

Nella prima riga, start non verrà sostituito con stop poiché la parola servizi non appare in quella riga, al contrario della seconda riga.,

# sed '/services/ s/start/stop/g' msg.txt
Sostituire le Parole nel File

l’Esecuzione di due o più sostituzioni in una volta

È possibile combinare due o più sostituzioni di un singolo comando. Sostituiamo le parole that e line in myfile.txt con Questo e versetto, rispettivamente.,

si noti come questo può essere fatto utilizzando un normale sed sostituzione di comando, seguito da un punto e virgola e una seconda sostituzione di comando:

# sed -i 's/that/this/gi;s/line/verse/gi' myfile.txt

Questo suggerimento è illustrato nella seguente immagine:

Sostituire le Parole Più nel File

Combinare sed e di altri comandi

naturalmente, sed possono essere combinati con altri strumenti, al fine di creare più potenti comandi., Ad esempio, usiamo l’esempio fornito in TIP #4 ed estraiamo il nostro indirizzo IP dall’output del comando ip route.

Inizieremo stampando solo la riga in cui si trova la parolasrc. Quindi convertiremo più spazi in uno solo., Infine, ci sarà tagliato il 9 ° campo (considerando un singolo spazio come separatore di campo), con la quale indirizzo IP è:

# ip route show | sed -n '/src/p' | sed -e 's/ */ /g' | cut -d' ' -f9

L’immagine sottostante illustra ogni passo del comando di cui sopra:

Combina sed con Altri Comandi

Sommario

In questa guida abbiamo condiviso 15 sed suggerimenti e trucchi per aiutarvi con la vostra quotidiana attività di amministrazione di sistema. C’è qualche altro suggerimento che si utilizza su base regolare e vorrebbe condividere con noi e il resto della comunità?,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *