sed

Sed Rimuovi spazi bianchi

Sed Rimuovi spazi bianchi
La rimozione degli spazi bianchi nei documenti è un passaggio di formattazione essenziale necessario per migliorare il layout generale di un testo e per garantire che i dati siano puliti e ordinati. Aiuta a memorizzare solo i dati richiesti ed eliminare gli spazi iniziali e finali non necessari. Di seguito sono riportati alcuni scenari in cui potrebbe essere necessario rimuovere gli spazi bianchi:

Se parliamo di spazi bianchi iniziali, sono relativamente facili da individuare poiché sono all'inizio del testo. Tuttavia, non è facile individuare gli spazi bianchi finali. Lo stesso vale per i doppi spazi che a volte sono anche difficili da individuare. Tutto diventa più difficile quando è necessario rimuovere tutti quegli spazi bianchi iniziali e finali da un documento contenente migliaia di righe.

Per rimuovere gli spazi bianchi dal documento, puoi utilizzare vari strumenti come awk, sed, cut e tr. In alcuni altri articoli, abbiamo discusso dell'uso di awk nella rimozione degli spazi bianchi. In questo articolo, discuteremo dell'uso di sed per rimuovere gli spazi bianchi dai dati.

Imparerai come usare sed per:

Eseguiremo i comandi su Ubuntu 20.04 Fossa Focale. Puoi anche eseguire gli stessi comandi su altre distribuzioni Linux. Useremo l'applicazione Ubuntu Terminal predefinita per eseguire i comandi. Per aprire il Terminale, usa la scorciatoia da tastiera Ctrl+Alt+T.

Cos'è Sed

Sed (acronimo di 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 stampa il testo trasformato sullo schermo.

Con sed puoi:

Utilizzo di Sed per rimuovere gli spazi bianchi

Useremo la seguente sintassi per rimuovere gli spazi bianchi dal testo:

s/ REGEXP /sostituzione /flag

Dove

Espressioni regolari

Alcune delle espressioni regolari che useremo qui sono:

A scopo dimostrativo, utilizzeremo il seguente file di esempio denominato "testfile".

Visualizza tutti gli spazi bianchi in un file

Per trovare tutti gli spazi bianchi nel tuo file, reindirizza l'output del comando cat al comando tr in questo modo:

$ gatto file di prova | tr " " "*" | tr "\t" "&"

Questo comando sostituisce tutti gli spazi bianchi nel file con il simbolo (*), il che rende più facile individuare tutti gli spazi bianchi, siano essi singoli, multipli, iniziali o finali.

Nella schermata seguente, puoi vedere che gli spazi bianchi sono sostituiti dal simbolo *.

Rimuovi tutti gli spazi bianchi (compresi spazi e tabulazioni)

In alcuni casi, è necessario rimuovere tutti gli spazi bianchi dai dati, ad esempio.e. iniziale, finale e gli spazi bianchi tra i testi. Il seguente comando rimuoverà tutti gli spazi bianchi dal "testfile".

$ gatto file di prova | sed -r 's/\s+//g'

Nota: Sed non altera i tuoi file a meno che non salvi l'output nel file.

Produzione:

Dopo aver eseguito il comando precedente, è apparso il seguente output, che mostra che tutti gli spazi bianchi sono stati rimossi dal testo.

Puoi anche utilizzare il seguente comando per verificare che tutti gli spazi bianchi siano stati rimossi.

$ gatto file di prova | sed -r 's/\s+//g' | tr " " "*" | tr "\t" "&"

Dall'output, puoi vedere che non c'è il simbolo (*) 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), puoi utilizzare il seguente comando:

$ gatto file di prova | sed -r '2s/\s+//g'

Rimuovi tutti gli spazi bianchi iniziali (compresi spazi e tabulazioni)

Per rimuovere tutti gli spazi bianchi dall'inizio di ogni riga (spazi bianchi iniziali), utilizzare il seguente comando:

$ gatto file di prova | sed 's/^[ \t]*//'

Produzione:

Il seguente output è apparso dopo aver eseguito il comando precedente, che mostra che tutti gli spazi bianchi iniziali sono stati rimossi dal testo.

Puoi anche utilizzare il seguente comando per verificare che tutti gli spazi bianchi iniziali siano stati rimossi:

$ gatto file di prova | sed 's/^[ \t]*//' | tr " " "*" | tr "\t" "&"

Dall'output, puoi vedere che non c'è il simbolo (*) all'inizio delle righe che verifica che tutti gli spazi bianchi iniziali siano stati rimossi.

Per rimuovere gli spazi bianchi iniziali solo da una riga specifica (diciamo la riga numero 2), puoi utilizzare il seguente comando:

$ gatto file di prova | sed '2s/^[ \t]*//'

Rimuovi tutti gli spazi bianchi finali (inclusi spazi e tabulazioni)

Per rimuovere tutti gli spazi bianchi dalla fine di ogni riga (spazi bianchi finali), usa il seguente comando:

$ gatto file di prova | sed 's/[ \t]*$//'

Produzione:

Il seguente output è apparso dopo aver eseguito il comando precedente, che mostra che tutti gli spazi bianchi finali sono stati rimossi dal testo.

Puoi anche usare il seguente comando per verificare che tutti gli spazi finali siano stati rimossi.

$ gatto file di prova | sed 's/[ \t]*$//' | tr " " "*" | tr "\t" "&"

Dall'output, puoi vedere che non c'è il simbolo (*) alla fine delle righe che verifica che tutti gli spazi bianchi finali siano stati rimossi.

Per rimuovere gli spazi bianchi finali solo da una riga specifica (diciamo la riga numero 2), puoi utilizzare il seguente comando:

$ gatto file di prova | sed '2s/[ \t]*$//'

Rimuovi gli spazi bianchi iniziali e finali

Per rimuovere tutti gli spazi bianchi sia dall'inizio che dalla fine di ogni riga (i.e. spazi bianchi iniziali e finali), utilizzare il seguente comando:

$ gatto file di prova | sed 's/^[ \t]*//;s/[ \t]*$//'

Produzione:

Il seguente output è apparso dopo aver eseguito il comando precedente, che mostra che sia gli spazi iniziali che quelli finali sono stati rimossi dal testo.

Puoi anche utilizzare il seguente comando per verificare che sia gli spazi iniziali che quelli finali siano stati rimossi.

$ gatto file di prova | sed 's/^[ \t]*//;s/[ \t]*$//' | tr " " "*" | tr "\t" "&"

Dall'output, puoi vedere che non c'è nessun simbolo (*) all'inizio o alla fine delle righe che verifica che tutti gli spazi bianchi iniziali e finali siano stati rimossi.

Per rimuovere sia gli spazi iniziali che quelli finali solo da una riga specifica (diciamo la riga numero 2), puoi utilizzare il seguente comando:

$ gatto file di prova | sed '2s/^[ \t]*//;2s/[ \t]*$//'

Sostituisci più spazi bianchi con uno spazio bianco

In alcuni casi, ci sono più spazi bianchi nello stesso posto nel file, ma hai solo bisogno di un singolo spazio bianco. Puoi farlo sostituendo quegli spazi multipli con un singolo spazio usando sed.

Il seguente comando sostituirà tutti i più spazi bianchi con un singolo spazio bianco da ogni riga nel "testfile".

$ gatto file di prova | sed 's/[ ]\+/ /g'

Produzione:

Il seguente output è apparso dopo aver eseguito il comando precedente, che mostra che gli spazi bianchi multipli sono stati sostituiti con il singolo spazio bianco.

Puoi anche utilizzare il seguente comando per verificare se più spazi bianchi vengono sostituiti con un singolo spazio bianco:

$ gatto file di prova | sed 's/[ ]\+/ /g' | tr " " "*" | tr "\t" "&"

Dall'output, puoi vedere il singolo simbolo (*) in ogni posizione che verifica che tutte le occorrenze dei più spazi bianchi siano sostituite con un singolo spazio bianco.

Quindi, si trattava di rimuovere gli spazi bianchi dai dati usando sed. In questo articolo, hai imparato come usare sed per rimuovere tutti gli spazi bianchi dai tuoi dati, rimuovere solo lo spazio bianco iniziale o finale e rimuovere sia lo spazio bianco iniziale che finale. Hai anche imparato a sostituire più spazi con uno spazio singolo. Ora sarà facile rimuovere gli spazi bianchi da un file contenente centinaia o migliaia di righe.

Le migliori app di mappatura del gamepad per Linux
Se ti piace giocare su Linux con un gamepad invece di un tipico sistema di input di tastiera e mouse, ci sono alcune app utili per te. Molti giochi pe...
Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...