GNU/Linux >> Linux Esercitazione >  >> Linux

Manipolazione del testo con sed e grep

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.]


Linux
  1. Estrarre la sottostringa secondo Regexp con Sed o Grep?

  2. sed con stringa letterale, non file di input

  3. Usa sed con ignora maiuscole e minuscole durante l'aggiunta di testo prima di un modello

  4. Trova e sostituisci il testo in un file tra un intervallo di righe usando sed

  5. echo testo con nuova riga in bash

Modifica il testo su Linux con KWrite e Kate

Manipolazione del testo dalla riga di comando con grep

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

Esempi e utilizzo di Grep con distinzione tra maiuscole e minuscole

Rimuovi le occorrenze della stringa nel file di testo

Come inserire un testo all'inizio di un file?