Orice caracter sau șir poate fi înlocuit folosind comanda `sed`. Uneori, trebuie să înlocuim caracterul newline ( n) dintr-un fișier cu o virgulă. În acest articol, folosim comanda `sed` pentru a înlocui n cu o virgulă.
Folosind `sed` pentru a înlocui n cu o virgulă
Multe probleme pot apărea la înlocuirea n cu o virgulă. În mod implicit, fiecare linie se termină cu n la crearea unui fișier. Comanda `sed` se poate împărți cu ușurință pe n și poate înlocui linia nouă cu orice caracter. Un alt delimitator poate fi utilizat în locul lui n, dar numai atunci când este utilizat GNU sed. Când n lipsește în ultima linie a fișierului, GNU sed poate evita imprimarea n. Mai mult, n se adaugă de obicei la fiecare ieșire consecutivă a `sed`.
Creați un fișier
În acest articol, vă vom arăta cum să utilizați comanda `sed` pentru a înlocui n cu o virgulă. Pentru a urma împreună cu acest tutorial, creați un fișier text numit Clients.txt cu următoarele informații tabulare despre client.
ID | Nume | Telefon | |
---|---|---|---|
c01 | Md. Rakib | [e-mail protejat] | 01856233238 |
c02 | Meher Afroze | [e-mail protejat] | 01733536342 |
c03 | Fakrul Ahsan | [e-mail protejat] | 01934737248 |
c04 | Helal Uddin | [e-mail protejat] | 01534895898 |
c05 | Nusrat Jahan | [e-mail protejat] | 01866345254 |
Exemplul 1: Înlocuiți n cu o virgulă folosind -z
Opțiunea -z este utilizată pentru a converti n la caracterul nul ( 0). Conținutul fișierului este tratat ca o singură linie dacă nu conține caractere nule. Comanda `sed` va converti noua linie în caracter nul și va înlocui fiecare n cu o virgulă folosind primul model de căutare și înlocuire. Aici, „g” este utilizat pentru căutarea globală a n. Cu al doilea model de căutare și înlocuire, ultima virgulă va fi înlocuită cu n.
$pisicăClients.txt
$sed -Cu 's / n /, / g; s /, $ / n /'Clients.txt
Următoarea ieșire va fi produsă după executarea comenzilor.
Exemplul 2: Înlocuiți n cu o virgulă folosind a, b, $! si n
Comanda `sed` poate fi utilizată pentru a înlocui n cu o virgulă folosind a, b, N și $! . Aici, la este folosit pentru a adăuga sarcini, b este folosit pentru a ramifica conținutul, N este folosit pentru a merge la linia următoare și $! este folosit pentru a împiedica aplicarea sarcinii de înlocuire pe ultima linie. Comanda va înlocui fiecare n cu virgulă, cu excepția ultimei linii.
$pisicăClients.txt
$sed ': a; N; $! ba; s / n /, / g'Clienți.txt
Următoarea ieșire va fi produsă după executarea comenzilor.
Exemplul 3: Înlocuiți n cu o virgulă folosind H, h, d, x și y
Dacă doriți să înlocuiți n) cu o virgulă într-un fișier mic, atunci se poate utiliza următoarea comandă `sed`. Aici, H este folosit pentru a atașa ultima linie la textul de reținere, 1h este folosit pentru a copia fiecare linie a fișierului în textul de reținere din prima linie, $! d este folosit pentru a șterge toate liniile, cu excepția ultimei linii, X este folosit pentru a schimba spațiul de text și modelul de reținere și și este folosit pentru a înlocui fiecare n în textul de menținere cu virgulă.
$pisicăClients.txt$sed „H; 1h; $! D; x; y / n /, /”Clients.txt
Următoarea ieșire va fi produsă după executarea comenzilor.
Exemplul 4: Înlocuiți n cu o virgulă folosind -n, H, h, g și p
Comanda `sed` poate fi utilizată pentru a înlocui n cu virgulă cu -n opțiune, care previne imprimarea automată. Ca în exemplul anterior, H este folosit aici pentru a atașa ultima linie la textul de reținere, 1h este folosit pentru a copia fiecare linie a fișierului în textul de reținere, $ se referă la ultima linie a fișierului, g este folosit pentru a copia din textul deținând și p este folosit pentru a imprima.
$pisicăClients.txt$sed-n'H; 1 oră; ${g; s / n/, / g; p} 'Clients.txt
Următoarea ieșire va fi produsă după executarea comenzilor de mai sus.
Exemplul 5: Înlocuiți n cu o virgulă folosind H, x, p
H, x și p au fost explicate în exemplele anterioare. Prima expresie de căutare și înlocuire va înlocui fiecare n cu o virgulă, iar a doua expresie de căutare și înlocuire va înlocui o virgulă la începutul unei linii cu un spațiu.
$pisicăClients.txt$sed-n„H; $ {x; s / n /, / g; s / ^, //; p;}”Clients.txt
Următoarea ieșire va fi produsă după executarea comenzilor de mai sus.
Exemplul 6: Înlocuiți n cu o virgulă folosind N și `cat`
Comanda `cat` este utilizată aici pentru a trimite conținutul fișierului la comanda` sed` și N este folosit pentru a trece la linia următoare.
$pisicăClients.txt$pisicăClients.txt| sed „N; s / n /, /”
Următoarea ieșire va fi produsă după executarea comenzilor de mai sus.
Concluzie
Poate fi necesar să înlocuiți n cu o virgulă pentru a transfera date dintr-un format de fișier în altul. Acest tip de înlocuire se poate face și prin utilizarea altor comenzi Linux. Multe opțiuni de comandă, cum ar fi H, N, h și x, pot fi utilizate cu comanda `sed` pentru a finaliza această sarcină. Acest tutorial prezintă mai multe moduri de a utiliza comanda `sed` pentru a înlocui n cu o virgulă.