Com substituir Newline per coma mitjançant l'ordre `sed`

How Replace Newline With Comma Using Sed Command



Es pot substituir qualsevol caràcter o cadena mitjançant l'ordre `sed`. De vegades, hem de substituir el caràcter de línia nova ( n) d'un fitxer per una coma. En aquest article, fem servir l'ordre `sed` per substituir n per una coma.

Utilitzant `sed` per substituir n per una coma

Es poden produir molts problemes en substituir n per una coma. Per defecte, totes les línies acaben amb n en crear un fitxer. L'ordre `sed` es pot dividir fàcilment a n i substituir la línia nova per qualsevol caràcter. Es pot utilitzar un altre delimitador en lloc de n, però només quan s'utilitza GNU sed. Quan falta n a l'última línia del fitxer, GNU sed pot evitar la impressió n. A més, n normalment s'afegeix a cada sortida consecutiva de `sed`.







Crea un fitxer

En aquest article, us mostrarem com utilitzar l'ordre `sed` per substituir n per una coma. Per seguir aquest tutorial, creeu un fitxer de text anomenat Clients.txt amb la informació tabular següent del client.



Identificació Nom Correu electrònic Telèfon
c01 Md. Rakib [protegit per correu electrònic] 01856233238
c02 Meher Afroze [protegit per correu electrònic] 01733536342
c03 Fakrul Ahsan [protegit per correu electrònic] 01934737248
c04 Helal Uddin [protegit per correu electrònic] 01534895898
c05 Nusrat Jahan [protegit per correu electrònic] 01866345254

Exemple 1: substituïu n per una coma fent servir -z

L'opció -z s'utilitza per convertir n al caràcter nul ( 0). El contingut del fitxer es tracta com una sola línia si no conté cap caràcter nul. L'ordre `sed` convertirà la línia nova en el caràcter nul i substituirà cadascuna n per una coma fent servir el primer patró de cerca i substitució. Aquí, 'g' s'utilitza per cercar globalment n. Amb el segon patró de cerca i substitució, l'última coma se substituirà per n.



$gatClients.txt

$sed -Amb 's / n /, / g; s /, $ / n /'Clients.txt

La següent sortida es produirà després d'executar les ordres.





Exemple 2: substituïu n per una coma fent servir a, b, $! i N

L'ordre `sed` es pot utilitzar per substituir n per una coma fent servir a, b, N i $! . Aquí, a s’utilitza per afegir tasques, b s’utilitza per ramificar el contingut, N s'utilitza per anar a la següent línia i $! s'utilitza per evitar que la tasca de reemplaçament s'apliqui a l'última línia. L'ordre substituirà cadascun n amb una coma excepte l'última línia.



$gatClients.txt

$sed ': a; N; $! ba; s / n /, / g'Clients.txt

La següent sortida es produirà després d'executar les ordres.

Exemple 3: substituïu n per una coma fent servir H, h, d, x i y

Si voleu substituir n) amb una coma en un fitxer petit, es pot utilitzar la següent ordre `sed`. Aquí, H s’utilitza per afegir l’última línia al text de retenció, 1h s’utilitza per copiar cada línia del fitxer al text de retenció de la primera línia, $! d s'utilitza per suprimir totes les línies excepte l'última línia, x s'utilitza per intercanviar el text de retenció i l'espai del patró, i i s'utilitza per substituir cadascun n al text de la retenció amb una coma.

$gatClients.txt

$sed 'H; 1h; $! D; x; y / n /, /'Clients.txt

La següent sortida es produirà després d'executar les ordres.

Exemple 4: substituïu n per una coma fent servir -n, H, h, g i p

Es pot utilitzar l'ordre `sed` per substituir n amb una coma amb -n opció, que impedeix la impressió automàtica. Com a l’exemple anterior, H s'utilitza aquí per afegir l'última línia al text de retenció, 1h s'utilitza per copiar totes les línies del fitxer al text que conté, $ fa referència a l'última línia del fitxer, g s'utilitza per copiar del text de la retenció i pàg s’utilitza per imprimir.

$gatClients.txt

$sed-n'H; 1h; ${g; s / n/, / g; p} 'Clients.txt

La següent sortida es produirà després d'executar les ordres anteriors.

Exemple 5: substituïu n per una coma fent servir H, x, p

H, x i pàg s’han explicat en exemples anteriors. La primera expressió de cerca i substitució substituirà cadascuna n amb una coma i la segona expressió de cerca i substitució substituirà una coma al principi d’una línia per un espai.

$gatClients.txt

$sed-n'H; $ {x; s / n /, / g; s / ^, //; p;}'Clients.txt

La següent sortida es produirà després d'executar les ordres anteriors.

Exemple 6: substituïu n per una coma mitjançant N i `cat`

Aquí s'utilitza l'ordre `cat` per enviar el contingut del fitxer a l'ordre` sed` i N s'utilitza per passar a la línia següent.

$gatClients.txt

$gatClients.txt| sed 'N; s / n /, /'

La següent sortida es produirà després d'executar les ordres anteriors.

Conclusió

Pot ser necessari substituir n per una coma per transferir dades d'un format de fitxer a un altre. Aquest tipus de substitució també es pot fer mitjançant altres ordres de Linux. Moltes opcions d'ordres, com H, N, h i x, es poden utilitzar amb l'ordre `sed` per completar aquesta tasca. Aquest tutorial repassa diverses maneres d'utilitzar l'ordre `sed` per substituir n per una coma.