Se parliamo di spazi bianchi principali, sono relativamente facili da individuare come sono all'inizio del testo. Tuttavia, non è facile individuare le spazi bianchi finali. Lo stesso è il caso di doppi spazi che a volte sono anche difficili da individuare. Tutto diventa più impegnativo quando è necessario rimuovere tutte quelle spazi bianchi leader e finali da un documento contenente migliaia di linee.
Per rimuovere gli spazi bianchi dal documento, è possibile utilizzare vari strumenti come AWK, SED, Cut e TR. In alcuni altri articoli, abbiamo discusso dell'uso di AWK nella rimozione dei bianchi. In questo articolo, discuteremo dell'uso di SED per la rimozione di spazi bianchi dai dati.
Imparerai come usare sed a:
Eseguiremo i comandi su Ubuntu 20.04 FOSSA FOCAL. Puoi anche eseguire gli stessi comandi su altre distribuzioni Linux. Utilizzeremo l'applicazione del terminale Ubuntu predefinito per l'esecuzione dei comandi. Per aprire il terminale, utilizzare la scorciatoia da tastiera Ctrl+Alt+T.
Cosa è sed
Sed (sta per Stream Editor) è un'utilità molto potente e pratica in Linux che ci consente di eseguire manipolazioni di testo di base sui flussi di input. Non è un editor di testo, ma aiuta a manipolare e filtrare il testo. Riceve i flussi di input e lo modifica secondo le istruzioni dell'utente e quindi stampare il testo trasformato sullo schermo.
Con sed, puoi:
Usando sed per rimuovere gli spazi bianchi
Useremo la seguente sintassi per rimuovere gli spazi bianchi dal testo:
s /regexp /sostituzione /flags
Dove
Espressioni regolari
Alcune delle espressioni regolari che useremo qui sono:
A scopo dimostrativo, useremo il seguente file di esempio denominato "Testfile".
Visualizza tutti gli spazi bianchi in un file
Per trovare tutte le spazi bianchi nel file, piubi l'output del comando CAT al comando TR in questo modo:
$ gatto testfile | Tr "" "*" | Tr "\ t" "e"
Questo comando sostituisce tutti gli spazi bianchi nel simbolo del file per (*), il che rende più facile individuare tutti gli spazi bianchi che siano spazi bianchi single, multipli, leader o seducenti.
Nella seguente screenshot, è possibile vedere che le spazi bianchi sono sostituiti da * simbolo.
Rimuovere tutti gli spazi bianchi (compresi spazi e schede)
In alcuni casi, è necessario rimuovere tutti gli spazi bianchi dai dati, io.e. Leading, trailing e gli spazi bianchi tra i testi. Il comando seguente rimuoverà tutte le spazi bianchi dal "Testfile".
$ gatto testfile | sed -r 's/\ s+// g'
Nota: SED non modifica i file a meno che non salvi l'output nel file.
Produzione:
Dopo aver eseguito il comando sopra, è apparso il seguente output, che mostra che tutti gli spazi bianchi sono stati rimossi dal testo.
È inoltre possibile utilizzare il seguente comando per verificare che tutti gli spazi bianchi siano stati rimossi.
$ gatto testfile | sed -r 's/\ s+// g' | Tr "" "*" | Tr "\ t" "e"
Dall'output, puoi vedere che non è un simbolo (*), il che significa che tutti gli spazi bianchi sono stati rimossi.
Per rimuovere tutti gli spazi bianchi ma solo da una riga specifica (diciamo la riga numero 2), è possibile utilizzare il seguente comando:
$ gatto testfile | sed -r '2s/\ s+// g'
Rimuovere tutti gli spazi bianchi principali (inclusi spazi e schede)
Per rimuovere tutte le spazi bianchi dall'inizio di ogni riga (conducenti bianchi), utilizzare il comando seguente:
$ gatto testfile | sed 's/^[\ t]*//'
Produzione:
Il seguente output è apparso dopo l'esecuzione del comando sopra, che mostra che tutti i primi spazi bianchi sono stati rimossi dal testo.
È inoltre possibile utilizzare il seguente comando per verificare che tutti i principali spazi bianchi siano stati rimossi:
$ gatto testfile | sed 's/^[\ t]*//' | Tr "" "*" | Tr "\ t" "e"
Dall'output, è possibile vedere non esiste un simbolo (*) all'inizio delle linee che verifica che tutti gli spazi bianchi principali vengano rimossi.
Per rimuovere le basi di bianchi principali solo da una riga specifica (diciamo la riga numero 2), è possibile utilizzare il comando seguente:
$ gatto testfile | sed '2s/^[\ t]*//'
Rimuovere tutti gli spazi bianchi finali (inclusi spazi e schede)
Per rimuovere tutte le spazi bianchi dall'estremità di ogni riga (spazi bianchi finali), utilizzare il seguente comando:
$ gatto testfile | sed 's/[\ t]*$ //'
Produzione:
Il seguente output è apparso dopo aver eseguito il comando sopra, che mostra che tutte le spazi bianche finali sono state rimosse dal testo.
È inoltre possibile utilizzare il seguente comando per verificare che tutti gli spazi bianchi finali siano stati rimossi.
$ gatto testfile | sed 's/[\ t]*$ //' | Tr "" "*" | Tr "\ t" "e"
Dall'output, è possibile vedere non esiste un simbolo (*) alla fine delle linee che verifica che tutti i canali di biancheria finali vengano rimossi.
Per rimuovere gli spazi bianchi finali solo da una riga specifica (diciamo la riga numero 2), è possibile utilizzare il comando seguente:
$ gatto testfile | sed '2s/[\ t]*$ //'
Rimuovi gli spazi bianchi di base e trailing
Per rimuovere tutti gli spazi bianchi sia dall'inizio che dalla fine di ogni riga (i.e. Sia spazi bianchi leader e finali), usa il seguente comando:
$ gatto testfile | sed 's/^[\ t]*//; s/[\ t]*$ //'
Produzione:
Il seguente output è apparso dopo aver eseguito il comando sopra, che mostra che sia le spazi bianche leader che quelle finali sono state rimosse dal testo.
È inoltre possibile utilizzare il seguente comando per verificare che siano rimosse le spazi bianche leader e quelli che sono stati rimossi.
$ gatto testfile | sed 's/^[\ t]*//; s/[\ t]*$ //' | Tr "" "*" | Tr "\ t" "e"
Dall'output, puoi vedere che non esiste un simbolo (*) all'inizio o all'estremità delle linee che verifica che tutte le spazi bianche leader e finali vengano rimossi.
Per rimuovere sia le spazi bianchi che portano e finali da solo una riga specifica (diciamo la riga numero 2), è possibile utilizzare il comando seguente:
$ gatto testfile | sed '2s/^[\ t]*//; 2s/[\ t]*$ //'
Sostituire più spazi bianchi con spazio bianco singolo
In alcuni casi, ci sono più spazi bianchi nello stesso posto nel file, ma hai solo bisogno di spazi bianchi. Puoi farlo sostituendo quei più spazi per un singolo spazio usando SED.
Il comando seguente sostituirà tutte le più spazi bianchi con singoli spazi bianchi da ciascuna riga nel "Testfile".
$ gatto testfile | sed 's/[] \+//g'
Produzione:
Il seguente output è apparso dopo l'esecuzione del comando sopra, che mostra che le più spazi bianche sono stati sostituiti con il singolo spazio bianco.
È inoltre possibile utilizzare il seguente comando per verificare se più spazi bianchi vengono sostituiti con spazi bianchi singoli:
$ gatto testfile | sed 's/[] \+//g' | Tr "" "*" | Tr "\ t" "e"
Dall'output, è possibile vedere il simbolo singolo (*) in ogni luogo che verifica che tutte le occorrenze delle più spazi bianchi siano sostituiti con un singolo spazio bianco.
Quindi, si trattava di rimuovere le spazi bianchi dai dati utilizzando SED. In questo articolo, hai imparato a utilizzare SED per rimuovere tutti gli spazi bianchi dai tuoi dati, rimuovere solo lo spazio bianco principale o seducente e rimuovere sia lo spazio bianco che si trova. Hai anche imparato a sostituire i più spazi con un singolo spazio. Ora sarà facile rimuovere gli spazi bianchi da un file contenente centinaia o migliaia di righe.