sed

Come sostituire la nuova riga con la virgola usando il comando 'sed'

Come sostituire la nuova riga con la virgola usando il comando 'sed'

Qualsiasi carattere o stringa può essere sostituita utilizzando il comando 'sed'. A volte, è necessario sostituire il carattere di nuova riga (\n) in un file con una virgola. In questo articolo, usiamo il comando 'sed' per sostituire \n con una virgola.

Usare 'sed' per sostituire \n con una virgola

Possono verificarsi molti problemi quando si sostituisce \n con una virgola. Per impostazione predefinita, ogni riga termina con \n durante la creazione di un file. Il comando 'sed' può essere facilmente diviso su \n e sostituire la nuova riga con qualsiasi carattere. Un altro delimitatore può essere usato al posto di \n, ma solo quando si usa GNU sed. Quando \n manca nell'ultima riga del file, GNU sed può evitare di stampare \n. Inoltre, \n viene solitamente aggiunto a ogni output consecutivo di 'sed'.

Crea un file

In questo articolo, ti mostreremo come utilizzare il comando "sed" per sostituire \n con una virgola. Per seguire questo tutorial, crea un file di testo chiamato Clienti.TXT con le seguenti informazioni tabulari sul cliente.

ID Nome E-mail Telefono
c01 Md. Rakib [e-mail protetta] 01856233238
c02 Meher Afroze [e-mail protetta] 01733536342
c03 Fakrul Ahsan [e-mail protetta] 01934737248
c04 Helal Uddin [e-mail protetta] 01534895898
c05 Nusrat Jahan [e-mail protetta] 01866345254

Esempio 1: sostituisci \n con una virgola usando -z

L'opzione -z viene utilizzata per convertire \n nel carattere null (\0). Il contenuto del file viene trattato come una singola riga se non contiene caratteri null. Il comando 'sed' convertirà la nuova riga nel carattere null e sostituirà ogni \n con una virgola utilizzando il primo modello di ricerca e sostituzione. Qui, 'g' è usato per cercare globalmente \n. Con il secondo modello di ricerca e sostituzione, l'ultima virgola verrà sostituita con \n.

$ cat Clienti.TXT
$ sed -z 's/\n/,/g;s/,$/\n/' Clienti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi.

Esempio 2: sostituisci \n con una virgola usando a, b, $! e n

Il comando 'sed' può essere usato per sostituire \n con una virgola usando a, b, N e $!. Qui, un è usato per aggiungere compiti, b è usato per ramificare il contenuto, no è usato per andare alla riga successiva, e $! viene utilizzato per impedire che l'attività di sostituzione venga applicata all'ultima riga. Il comando sostituirà ciascuno \n con una virgola tranne l'ultima riga.

$ cat Clienti.TXT
$ sed ':a;N;$!ba;s/\n/,/g' Clienti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi.

Esempio 3: sostituisci \n con una virgola utilizzando H, h, d, x e y

Se vuoi sostituire \n) con una virgola in un piccolo file, è possibile utilizzare il seguente comando 'sed'. Qui, H è usato per aggiungere l'ultima riga al testo di attesa, 1h è usato per copiare ogni riga del file nel testo di attesa dalla prima riga, $!d è usato per eliminare tutte le righe tranne l'ultima riga, X è usato per scambiare il testo in attesa e lo spazio del modello, e è usato per sostituire ciascuno \n nel testo di attesa con una virgola.

$ cat Clienti.TXT
$ sed 'H;1h;$!d;x;y/\n/,/' Clienti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi.

Esempio 4: sostituisci \n con una virgola usando -n ,H, h, g e p

Il comando 'sed' può essere usato per sostituire \n con una virgola con -n opzione, che impedisce la stampa automatica. Come nell'esempio precedente, H è usato qui per aggiungere l'ultima riga al testo in attesa, 1 ora è usato per copiare ogni riga del file nel testo di attesa, $ si riferisce all'ultima riga del file, g è usato per copiare dal testo in attesa, e p è usato per stampare.

$ cat Clienti.TXT
$ sed -n  "H;1h;\$g;s/\n/,/g;p" Clienti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti.

Esempio 5: sostituisci \n con una virgola usando H, x, p

H, x e p sono stati spiegati negli esempi precedenti. La prima espressione di ricerca e sostituzione sostituirà ciascuna \n con una virgola e la seconda espressione di ricerca e sostituzione sostituirà una virgola all'inizio di una riga con uno spazio.

$ cat Clienti.TXT
$ sed -n  'H;$x;s/\n/,/g;s/^,//;p;' Clienti.TXT

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti.

Esempio 6: sostituisci \n con una virgola usando N e 'cat'

Il comando 'cat' viene utilizzato qui per inviare il contenuto del file al comando 'sed', e no è usato per passare alla riga successiva.

$ cat Clienti.TXT
$ cat Clienti.txt | sed 'N;s/\n/,/'

Il seguente output verrà prodotto dopo aver eseguito i comandi precedenti.

Conclusione

Potrebbe essere necessario sostituire \n con una virgola per trasferire i dati da un formato di file a un altro. Questo tipo di sostituzione può essere eseguita anche utilizzando altri comandi di Linux. Molte opzioni di comando, come H, N, h e x, possono essere utilizzate con il comando 'sed' per completare questa attività. Questo tutorial illustra diversi modi per utilizzare il comando 'sed' per sostituire \n con una virgola.

Come mostrare il contatore FPS nei giochi Linux
I giochi Linux hanno avuto una grande spinta quando Valve ha annunciato il supporto Linux per il client Steam e i loro giochi nel 2012. Da allora, mol...
Come scaricare e giocare a Sid Meier's Civilization VI su Linux
Introduzione al gioco Civilization 6 è una versione moderna del concetto classico introdotto nella serie dei giochi Age of Empires. L'idea era abbasta...
Come installare e giocare a Doom su Linux
Introduzione a Doom La serie Doom è nata negli anni '90 dopo l'uscita dell'originale Doom. È stato un successo immediato e da quel momento in poi la s...