Strumenti come sed
(editor di stream) e grep
(stampa globale di espressioni regolari) sono metodi efficaci per risparmiare tempo e rendere il tuo lavoro più veloce. Prima di approfondire i casi d'uso, vorrei spiegare brevemente le espressioni regolari (regex), che sono necessarie per la manipolazione del testo che faremo in seguito.
Cosa sono le espressioni regolari? Quando trattiamo file di registro, file di testo o un pezzo di codice, noi
bisogno di capire che tutti questi sono costituiti da personaggi. Quando la lunghezza del file è grande, diventa necessario filtrare determinati modelli per facilitare il debug. Troverai esempi di espressioni regolari in questi casi d'uso.
Gruppo 1:dati del server
Supponiamo che tu abbia un file che ha un'occorrenza di una stringa:
Ora, come filtrare site1
's (il file sopra è un semplice esempio), in modo che tu possa prendere solo le informazioni necessarie e manipolare le voci?
Chiaramente, possiamo vedere che esiste un modello comune ("Distribuzione cloud") in tutto il file. Quindi, ora possiamo usare le tecniche di filtraggio per acquisire informazioni dal file usando grep
. Ricordo questo come "get regex n print".
Caso d'uso 1
Se voglio i server di diverse regioni, posso usare grep
come segue:
Caso d'uso 2
Ora, supponi di voler filtrare i server in base all'IP. Puoi fare lo stesso usando:
Caso d'uso 3
Ora, dai un'occhiata al primo grep
immagine di comando. Anche se conoscevi l'intervallo di sottorete del tuo sistema, il comando ha stampato l'occorrenza di 10.1 in tutto il file.
Come puoi risolvere questo tipo di caso d'uso? Possiamo gestire questo problema utilizzando il filtro avanzato basato su espressioni regolari, in questo modo:
Questo esempio è solo un possibile utilizzo di grep
. Ancora una volta, poiché si tratta di un file relativamente piccolo, puoi ottenere ciò che desideri utilizzando ciò che è mostrato sopra. Il -v
switch inverte i criteri di ricerca, il che significa che grep
cerca il file sed-grep.txt
e stampa tutti i dettagli, escluso il <search-pattern>
(10.1. in questo caso).
Caso d'uso 4
Supponiamo di voler sostituire gli indirizzi IP e spostare tutti i server in quelle regioni in una sottorete diversa. Puoi usare sed
per questo caso d'uso.
Dalla pagina man, sed
usa il formato:
sed [options] commands [file-to-edit]
Il nostro comando per questo caso d'uso potrebbe essere simile al seguente:
Questo comando è suddiviso come segue:
- I
s
sta per sostituto. - Il
%
è un delimitatore (possiamo usare qualsiasi carattere qui). - Il
<search pattern>
appare dopo il primo%
. - Il
<replace pattern>
appare dopo il secondo%
. - Il
g
sta per sostituzione globale (che significa in tutto il file).
Oppure:
s%<search-pattern>%<replace-pattern>%g
Caso d'uso 5
Puoi persino modificare le regioni dei server nel file:
Caso d'uso 6
Questo caso d'uso è più avanzato. Rimuoveremo solo i commenti (#
) da un file utilizzando sed
:
Questo comando dice che se #
appare come primo carattere di una riga, per sostituire quella riga con uno spazio vuoto. Di conseguenza, questo comando esegue il lavoro di rimozione dei commenti dal file.
Gruppo 2:/etc/passwd
Diamo un'occhiata ad altri casi d'uso, questa volta che coinvolgono /etc/passwd
.
Caso d'uso 1
Supponiamo di voler catturare gli utenti dal file /etc/passwd
file. Puoi usare sed
come segue:
Caso d'uso 2
E se volessi prendere solo i primi 10 utenti da /etc/passwd
? Puoi usare sed
e awk
a questo scopo (per favore abbiate pazienza qui):
Questo comando si suddivide in:
sed -n
significa non stampare tutto.p
stampa le righe da 1 a 10.awk
qui usa:
come separatore di campo e stampa la prima colonna.
Caso d'uso 3
Elimina un particolare intervallo di righe nei file di testo usando sed
:
Caso d'uso di SELinux
Ecco un esempio sed
comando per manipolare SELinux:
Conclusione
Questo è il mio tentativo di dare a voi lettori solo un'anteprima delle possibilità di usare sed
e grep
. Puoi eseguire molte manipolazioni del testo usando questi comandi. Fare riferimento a diverse opzioni utilizzando la pagina man per saperne di più.
[Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.]