Sed Sostituisci Newline con lo spazio

Sed Sostituisci Newline Con Lo Spazio



In UNIX/Linux, il comando sed è uno strumento dedicato per la modifica dei flussi. Può eseguire varie operazioni su un flusso di testo, come ricerca, ricerca e sostituzione e inserimento/cancellazione. Per la maggior parte, tuttavia, sed viene utilizzato per trovare e sostituire il contenuto del testo.

In questa guida, mostreremo la sostituzione delle nuove righe con lo spazio usando sed.

Utilizzo di sed per la sostituzione del testo

Innanzitutto, diamo un'occhiata rapidamente all'esecuzione di ricerca e sostituzione di base utilizzando sed. Lo stesso metodo verrà utilizzato quando si sostituiscono le nuove righe con spazi con alcune opzioni aggiuntive. La struttura dei comandi è la seguente:







$ sed -e 's///'

Dai un'occhiata al seguente comando:



$ echo 'la volpe bruna veloce' | sed -e 's/veloce/veloce/g'



Il comando echo stampa la stringa su STDOUT . Il flusso STDOUT è quindi convogliato sed. Abbiamo incaricato sed di sostituire qualsiasi istanza di quick da sostituire con fast. Infine, l'output viene stampato sullo schermo.





Sostituzione di nuove righe con lo spazio

A scopo dimostrativo, ho creato il seguente file di testo test.txt con diversi contenuti fittizi:

$ gatto test.txt



Il comando sed accetta espressioni regolari per descrivere vari modelli. Sfruttando questa funzione, descriveremo newline come \n. Proviamo a sostituire le nuove righe con spazi bianchi:

$ sed -e 's/\n/ /g' test.txt

Tuttavia, non ha funzionato come previsto. Per raggiungere questo obiettivo, abbiamo bisogno di alcune opzioni aggiuntive. Dai un'occhiata al seguente comando:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

Il comando sed ha più sezioni; ognuno denota un compito specifico:

  • :a: Crea un'etichetta 'a'
  • N: Aggiunge la riga successiva allo spazio del modello
  • $!ba: se non è l'ultima riga, ritorna all'etichetta 'a'
  • s/\n/ /g: trova e sostituisce la nuova riga (\n) con spazio (/ /). Il modello è abbinato a livello globale (/g)

Il comando sed scorre i passaggi fino a raggiungere l'ultima riga, sostituendo tutti i caratteri \n con uno spazio.

Invece di questo comando complesso, possiamo semplificare le cose usando il flag -z che specifica sed per lavorare con record separati da null. Il comando sarebbe simile a questo:

$ sed -z -e 's/\n/ /g' test.txt

Metodi alternativi

Mentre sed può svolgere bene il compito, ci sono alcuni strumenti alternativi. In questa sezione, ne esamineremo brevemente un paio.

Per il seguente esempio, possiamo usare il comando tr per sostituire newline con spazi bianchi in modo semplice:

$ tr '\n' ' ' < test.txt

Possiamo anche usare perl per fare il lavoro. Anche la seguente sintassi è simile a quella che abbiamo usato con sed (ma semplificata):

$ perl -p -e 's/\n/ /' test.txt

Un altro modo per sostituire le nuove righe con spazi bianchi è usare il comando incolla. Nota che può rimuovere solo un carattere:

$ incolla -s -d ' ' test.txt

Simile a sed, Linux viene fornito con un altro strumento awk. Simile a sed, può anche eseguire alcune sostituzioni avanzate sull'ingresso. Per il nostro scopo, utilizzare il seguente comando awk:

$ awk 1 ORS=' ' test.txt

Conclusione

Questa guida ha esplorato come possiamo sostituire newline con spazio usando sed. È stato ottenuto in due modi diversi. Questa guida include anche altri strumenti rilevanti che possiamo utilizzare per sostituire newline con spazi bianchi.

Invece di usare comandi complessi difficili da memorizzare, utilizziamo lo scripting Bash per eseguire molte cose in Linux. Anche se a scapito di alcune prestazioni, la flessibilità e l'usabilità ne valgono la pena. Impara di più riguardo Scripting Bash per principianti .