Come modificare il testo usando le espressioni regolari con sed Stream Editor

Contenuti

Come modificare il testo usando le espressioni regolari con sed Stream Editor

Tutti gli utenti di computer nel mondo, presto o tardi, modificherà una stringa di testo, manualmente o automaticamente. Essere presentato al editor di flusso ma, che ti consente di apportare modifiche massicce al testo in stringhe e file.

Espressioni regolari sulla riga di comando

L'editor di sequenze sed, uno strumento disponibile di default su molte distribuzioni Linux, ti permette di analizzare e trasformare il testo in modo facile e diretto, se detto testo è all'interno di file o solo semplici stringhe sulla riga di comando. Può anche analizzare elenchi di directory, elaborare i risultati dell'elenco e la maggior parte degli altri tipi di informazioni che possono fluire all'interno o all'esterno della sessione del terminale.

Per verificare se sed è abilitato sulla tua distribuzione Linux, scriba sed --version sulla riga di comando:

Versione dell'editor di flusso Sed

Non preoccuparti se la tua versione è un po' più vecchia di quella mostrata qui. Andrà quasi sicuramente bene per gli esempi di cui discutiamo qui. Se lo strumento non è abilitato nella tua distribuzione, puoi installarlo usando sudo apt install sed per sistemi operativi basati su Ubuntu / Debian, oh sudo yum install sed per sistemi operativi basati su RedHat / RPM.

sed applica una piccola trasformazione del testo usando quella che viene chiamata regex o espressione regolare. Un'espressione regolare è un modo e un metodo per esprimere operazioni di ricerca, sostituzione e modifica basate su testo più complesse in un formato ancora leggibile dall'uomo. Le espressioni regolari sono complicate e possono essere difficili da leggere per i principianti. Puoi leggere la nostra guida, Come si usa effettivamente Regex?? Per ulteriori informazioni su come leggere e scrivere Regex.

IMPARENTATO: Come si usa effettivamente Regex??

Ai fini di questo post, ci atterremo a espressioni regolari facili da capire e leggere. Come esempio, la seguente è una semplice sostituzione:

Ciao, Cloudsavvyit trasformazione dei fan

Come potete vedere, abbiamo fatto eco a un piccolo frammento di testo e, successivamente, lo trasformiamo usando lo strumento sed. Usiamo il comando sed 's’ (sostituto) e indichiamo cosa volevamo cambiare. Puoi leggerlo in un altro modo come s|from|to| dove '|’ è il separatore tra le sezioni / campi, 'S’ è il comando y 'from’ E fino a’ sono le due opzioni passate al comando 's'.

Perché, trasformiamo ¡Hola, fan delle tecnologie informatiche cloud!’ un “Ciao, fan di systempeaker.com!” Modifica di una sola parte del testo utilizzando l'editor di flusso SED. Facciamo un esempio un po' più complesso.

Trasforma il testo in un file usando l'editor di flusso sed

Qui creiamo prima un file con 3 linee usando il echo comando con reindirizzamento a un file ('>’ crea un nuovo file, sovrascrivendo un file con lo stesso nome se esiste, e '>>’ viene aggiunto a un file senza modificarlo altrimenti). Prossimo, mostriamo il contenuto del file usando il cat comando.

Successivamente trasformiamo il contenuto del file con il sed strumento direttamente. Per farlo, specifichiamo l'opzione '-i’ per sed che modifica il file sul posto. L'effettiva istruzione di trasformazione del testo è la stessa di prima. E infine specifichiamo il nome del file alla fine del comando. Quindi controlliamo il contenuto del file e notiamo come è cambiato il nostro input.

Come puoi iniziare a vedere?, o lo sai già dalle esperienze passate, c'è molta potenza disponibile nello strumento sed.

Ravviviamo un po' le cose estendendo la nostra espressione regolare e il metodo di scrittura dell'istruzione di trasformazione del testo sed:

Un'espressione regolare e un'istruzione sed più complesse

In questo esempio, sostituiamo la lettera 'h’ per H’ e lo abbiamo fatto a livello globale (guarda il qualificatore 'g’ verso la fine della prima istruzione passata a sed) e senza distinzione tra maiuscole e minuscole (osservare la 'i’ qualificatore anche verso la fine della prima affermazione). l'H’ corrisponde anche quando il file contiene 'H’ a causa del qualificatore 'i'.

Successivamente iniziamo una nuova istruzione (fine delle istruzioni / termina con ';’ proprio come in molti altri linguaggi di programmazione) in cui rimuoviamo '.com’ solo cercarlo e sostituirlo con niente.

Nota anche come abbiamo utilizzato separatori alternativi di campo diversi / comando. Nel primo esempio usiamo '|’ che è generalmente un separatore di campo abbastanza raro e facile da usare. Molte persone usano '/', anche se questo può portare a problemi nell'analisi dei nomi delle rotte che spesso contengono '/'.

Essere in grado di utilizzare diversi separatori di alternative di campo / Il comando ti consente di utilizzare facilmente un altro separatore se la tua stringa di testo contiene effettivamente o probabilmente conterrà un carattere specifico.

Utilizzo di sed con i file

Esploriamo un altro esempio basato su sed in cui inseriremo del testo in un file:

Inserimento di testo utilizzando l'editor di flusso sed

In questo esempio, creiamo un file con 5 righe e quindi usiamo un'istruzione sed leggermente complessa per iniettare un separatore '-‘ dopo ogni seconda riga. Sebbene la sintassi sia per lo più autoesplicativa, È interessante notare che il comando 'r’ (leggere / aggiungi testo da un file) specifica il nome del file di iniezione direttamente e mentre è ancora all'interno dell'istruzione principale, senza alcun separatore.

Puoi anche iniziare a vederlo, durante l'apprendimento della sintassi di un'espressione regolare, è utile imparare a fondo la sintassi di sed. È quasi come imparare due nuove lingue straniere, ma il vantaggio è che la sintassi sed può crescere con la tua necessità di ulteriore complessità.

Esploriamo un esempio in cui sostituiamo un'area di testo specifica con qualcos'altro:

Modifica aree di testo specifiche usando la sete

In questo esempio, cerchiamo il testo '3', e per quella linea sostituiremo 'C’ per 'Z'. Vedi quanto può essere versatile la sete.

Finire, possiamo analizzare l'analisi di altri tipi di input:

Analisi di altri tipi di input testuale con sed

Come potete vedere, noi creiamo 3 file e richiedere un elenco di directory utilizzando il ls comando. Successivamente prendiamo quell'output come input per sed (usando il comando linux pipe, '|') e trasformiamo parte del nostro elenco di directory in un carattere di sottolineatura.

L'editor di sequenze sed è uno strumento versatile che può aiutarti ad analizzare e trasformare quasi tutti i testi direttamente dalla riga di comando del terminale, se l'input proviene da un semplice echo dichiarazione, altri strumenti Linux o da un semplice file di testo. Godere!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.