Următoarea ieșire arată că GNU Sed din versiunea 4.4 este instalat în sistem.
Sintaxă:
sed [Opțiuni]...[scenariu] [fişier]
Dacă niciun nume de fișier nu este furnizat cu comanda `sed`, atunci scriptul va funcționa pe datele de intrare standard. Scriptul `sed` poate fi executat fără nicio opțiune.
Conţinut :
- Înlocuirea de bază a textului folosind „sed”
- Înlocuiți toate instanțele unui text dintr-o anumită linie a unui fișier utilizând opțiunea „g”
- Înlocuiți a doua apariție doar a unui meci pe fiecare linie
- Înlocuiți ultima apariție a unui meci pe fiecare linie
- Înlocuiți prima potrivire dintr-un fișier cu text nou
- Înlocuiți ultima potrivire dintr-un fișier cu text nou
- Scăparea barei inversă în comenzile de înlocuire pentru a gestiona căutarea și înlocuirea căilor de fișiere
- Înlocuiți calea completă a tuturor fișierelor doar cu numele fișierului fără director
- Înlocuiți textul, dar numai dacă se găsește un alt text în șir
- Înlocuiți textul, dar numai dacă un alt text nu este găsit în șir
- Adăugați șir înainte după modelul de potrivire folosind „ 1 '
- Ștergeți liniile potrivite
- Ștergeți linia potrivită și 2 linii după potrivirea liniei
- Ștergeți toate spațiile la sfârșitul liniei de text
- Ștergeți toate liniile care au o potrivire de două ori pe linie
- Ștergeți toate liniile care au singurul spațiu alb
- Ștergeți toate caracterele neprimabile
- Dacă există o potrivire în linie, adăugați ceva la sfârșitul liniei
- Dacă există o potrivire în linie, introduceți linia înainte de meci
- Dacă există o potrivire în linie, introduceți linia după meci
- Dacă nu există o potrivire, adăugați ceva la sfârșitul liniei
- Dacă nu există o potrivire, ștergeți linia
- Duplicați textul potrivit după adăugarea unui spațiu după text
- Înlocuiți una dintr-o listă de șiruri cu șirul nou
- Înlocuiți un șir potrivit cu un șir care conține linii noi
- Eliminați liniile noi din fișier și introduceți o virgulă la sfârșitul fiecărei linii
- Eliminați virgulele și adăugați linii noi pentru a împărți textul în mai multe linii
- Găsiți potrivirea nesensibilă la majuscule și ștergeți linia
- Găsiți o potrivire nesensibilă la majuscule și înlocuiți-o cu text nou
- Găsiți o potrivire nesensibilă la majuscule și majuscule și înlocuiți-o cu toate majusculele aceluiași text
- Găsiți o potrivire nesensibilă la majuscule și înlocuiți-o cu toate minusculele din același text
- Înlocuiți toate caracterele majuscule din text cu caractere mici
- Căutați numărul în linie și adăugați simbolul monedei după număr
- Adăugați virgule la numerele care au mai mult de 3 cifre
- Înlocuiți caracterele filelor cu 4 caractere spațiale
- Înlocuiți 4 caractere spațiale consecutive cu un caracter tab
- Trunchiați toate liniile la primele 80 de caractere
- Căutați un regex șir și adăugați un text standard după acesta
- Căutați un regex șir și o a doua copie a șirului găsit după acesta
- Rularea scripturilor `sed` cu mai multe linii dintr-un fișier
- Potriviți un model cu mai multe linii și înlocuiți-l cu noul text cu mai multe linii
- Înlocuiți ordinea a două cuvinte care se potrivesc cu un model
- Utilizați mai multe comenzi sed din linia de comandă
- Combinați sed cu alte comenzi
- Introduceți o linie goală într-un fișier
- Ștergeți toate caracterele alfanumerice din fiecare linie a unui fișier.
- Folosiți „&” pentru a potrivi șirul
- Comutați perechea de cuvinte
- Scrieți cu majuscule primul caracter al fiecărui cuvânt
- Imprimați numerele de linie ale fișierului
1. Înlocuirea de bază a textului folosind „sed”
Orice parte a unui text poate fi căutată și înlocuită folosind căutarea și înlocuirea modelului folosind comanda `sed`. În exemplul următor, „s” indică sarcina de căutare și înlocuire. Cuvântul „Bash” va fi căutat în text, Bash Scripting Language și dacă cuvântul există în text, acesta va fi înlocuit cu cuvântul „Perl”.
$aruncat „Limbaj de scriptare Bash” | sed 's / Bash / Perl /'
Ieșire:
Cuvântul „Bash” există în text. Deci rezultatul este „Limbajul de scriptare Perl”.
Comanda `sed` poate fi utilizată și pentru substituirea oricărei părți a conținutului fișierului. Creați un fișier text numit weekday.txt cu următorul conținut.
weekday.txt
lunimarţi
miercuri
joi
vineri
sâmbătă
duminică
Următoarea comandă va căuta și înlocui textul „Duminică”, cu textul „Duminica este sărbătoare”.
$pisicăweekday.txt$sed 's / duminică / duminica este sărbătoare /'weekday.txt
Ieșire:
„Duminică” există în fișierul weekday.txt și acest cuvânt este înlocuit cu textul, „Duminica este sărbătoare” după executarea comenzii „sed” de mai sus.
2. Înlocuiți toate instanțele unui text într-o anumită linie a unui fișier folosind opțiunea „g”
Opțiunea „g” este utilizată în comanda „sed” pentru a înlocui toate aparițiile modelului de potrivire. Creați un fișier text numit python.txt cu următorul conținut pentru a cunoaște utilizarea opțiunii „g”. Acest fișier conține cuvântul. 'Piton' de mai multe ori.
python.txt
Python este un limbaj foarte popular.
Python este ușor de utilizat. Python este ușor de învățat.
Python este un limbaj pe mai multe platforme
Următoarea comandă va înlocui toate aparițiile „ Piton ”În a doua linie a fișierului, python.txt . Aici, 'Piton' apare de două ori în a doua linie.
$ piton de pisică.txt$ sed„2 s / Python / perl / g”piton.txt
Ieșire:
Următoarea ieșire va apărea după rularea scriptului. Aici, Toată apariția „Python” în a doua linie este înlocuită cu „Perl”.
3. Înlocuiți a doua apariție doar a unui meci pe fiecare linie
Dacă un cuvânt apare de mai multe ori într-un fișier, atunci apariția specială a cuvântului în fiecare linie poate fi înlocuită folosind comanda `sed` cu numărul de apariție. Următoarea comandă `sed` va înlocui a doua apariție a modelului de căutare în fiecare linie a fișierului, python.txt .
$ sed„s / Python / perl / g2”piton.txtIeșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Aici, textul de căutare, „ Piton' apare de două ori numai în a doua linie și este înlocuit cu textul „ Perl ‘.
4. Înlocuiți ultima apariție doar a unui meci pe fiecare linie
Creați un fișier text numit lang.txt cu următorul conținut.
lang.txt
Limbaj de programare Bash. Limbaj de programare Python. Limbaj de programare Perl.
Limbaj de marcare hipertext.
Limbaj de marcare extensibil.
5. Înlocuiți prima potrivire dintr-un fișier cu text nou
Următoarea comandă va înlocui doar prima potrivire a modelului de căutare, „ Piton „După text, ‘Perl ‘. Aici, „1” este folosit pentru a se potrivi cu prima apariție a modelului.
$ piton de pisică.txt$ sed'1 s / Python / perl /'piton.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Aici. prima apariție a „Python” în prima linie este înlocuită cu „perl”.
6. Înlocuiți ultima potrivire dintr-un fișier cu text nou
Următoarea comandă va înlocui ultima apariție a modelului de căutare, 'Piton „După text, „Bash”. Aici, „$” simbolul este folosit pentru a se potrivi cu ultima apariție a modelului.
$ piton de pisică.txt$ dar -e'$ s / Python / Bash /'piton.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
7. Escaparea barei inversă în comenzile de înlocuire pentru a gestiona căutarea și înlocuirea căilor de fișiere
Este necesar să scăpați de bară inversă din calea fișierului pentru căutare și înlocuire. Următoarea comandă de `sed` va adăuga backslash () în calea fișierului.
$aruncat /Acasă/ubuntu/cod/perl/add.pl| sed 's; /; \ /; g'Ieșire:
Calea fișierului, „/Home/ubuntu/code/perl/add.pl” este furnizat ca intrare în comanda `sed` și următoarea ieșire va apărea după executarea comenzii de mai sus.
8. Înlocuiți calea completă a tuturor fișierelor doar cu numele fișierului fără director
Numele fișierului poate fi extras din calea fișierului foarte ușor folosind ` nume de bază` comanda. Comanda `sed` poate fi folosită și pentru a extrage numele fișierului din calea fișierului. Următoarea comandă va prelua numele fișierului numai din calea fișierului furnizată de comanda `echo`.
$aruncat „/home/ubuntu/temp/myfile.txt” | sed „s /.*///”Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Aici, numele fișierului, „ myfile.txt ” este tipărit ca ieșire.
9. Înlocuiți textul, dar numai dacă se găsește un alt text în șir
Creați un fișier numit „ dept.txt ” cu următorul conținut pentru a înlocui orice text bazat pe alt text.
dept.txt
Lista studenților:
CSE - NumărEEE - Număr
Civil - Cont
Două comenzi de înlocuire sunt utilizate în următoarea comandă `sed`. Aici, textul, „ Numara ‘Va fi înlocuit cu 100 în linia care conține textul, „CSE „Și textul,„ Numara' va fi înlocuit cu 70 în linia care conține modelul de căutare, „ EEE ” .
$pisicădept.txt$sed -Și '/ CSE / s / Count / 100 /; / EEE / s / Count / 70 /; 'dept.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
10. Înlocuiți textul, dar numai dacă un alt text nu se găsește în șir
Următoarea comandă „sed” va înlocui valoarea „Count” din linia care nu conține textul, „CSE”. dept.txt fișierul conține două rânduri care nu conțin textul, „CSE”. Asa ca ' Numara ‘Textul va fi înlocuit cu 80 în două rânduri.
$pisicădept.txt$sed -i -Și '/ CSE /! s / Count / 80 /; 'dept.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
11. Adăugați șir înainte și după modelul de potrivire folosind „ 1”
Secvența modelelor de potrivire a comenzii „sed” este notată cu „ 1”, „ 2” și așa mai departe. Următoarea comandă „sed” va căuta modelul, „Bash” și dacă modelul se potrivește, atunci va fi accesat prin „ 1 ′ în partea de înlocuire a textului. Aici, textul „Bash” este căutat în textul introdus și, un text este adăugat înainte și un alt text este adăugat după „ 1”.
$aruncat „Limba bash” | sed 's / (Bash ) / Learn 1 programare /'Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Aici, ' Învăța' textul este adăugat înainte „Bash” și ' programare Textul este adăugat după „ Bash ’.
12. Ștergeți liniile potrivite
„D” opțiunea este utilizată în comanda `sed` pentru a șterge orice linie din fișier. Creați un fișier numit os.txt și adăugați următorul conținut pentru a testa funcția „D” opțiune.
cat os.txt
WindowsLinux
Android
TU
Următoarea comandă `sed` va șterge acele linii din os.txt fișier care conține textul, „OS”.
$pisicăos.txt$sed „/ The D”os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
13. Ștergeți linia potrivită și 2 linii după potrivirea liniei
Următoarea comandă va șterge trei linii din fișier os.txt dacă modelul, „ Linux ” e gasit. os.txt conține textul, ‘Linux ‘În a doua linie. Deci, această linie și următoarele două linii vor fi șterse.
$sed „/ Linux /, + 2d”os.txtIeșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
14. Ștergeți toate spațiile la sfârșitul liniei de text
Folosind [:gol:] class poate fi folosit pentru a elimina spații și file din text sau conținutul oricărui fișier. Următoarea comandă va elimina spațiile de la sfârșitul fiecărei linii a fișierului, os.txt.
$pisicăos.txt$sed 's / [[: blank:]] * $ //'os.txt
Ieșire:
os.txt conține linii goale după fiecare linie, acestea sunt șterse prin comanda `sed` de mai sus.
15. Ștergeți toate liniile care au o potrivire de două ori pe linie
Creați un fișier text numit, input.txt cu următorul conținut și ștergeți acele linii ale fișierului care conține modelul de căutare de două ori.
input.txt
PHP este un limbaj de script pe partea de server.
PHP este un limbaj open-source, iar PHP este sensibil la majuscule și minuscule.
PHP este independent de platformă.
Textul „PHP” conține de două ori în a doua linie a fișierului, input.txt . Două comenzi „sed” sunt utilizate în acest exemplu pentru a elimina acele linii care conțin modelul „ php ' de două ori. Prima comandă „sed” va înlocui a doua apariție a „php” în fiecare linie cu „ dl ‘Și trimiteți ieșirea în a doua comandă` sed` ca intrare. A doua comandă „sed” va șterge acele linii care conțin textul, „ dl ‘.
$pisicăinput.txt$sed „s / php / dl / i2; t”input.txt| sed „/ dl / d”
Ieșire:
input.txt fișierul are două linii care conțin modelul, 'Php' de două ori. Deci, următoarea ieșire va apărea după executarea comenzilor de mai sus.
16. Ștergeți toate liniile care au doar spațiu alb
Selectați orice fișier care conține linii goale în conținut pentru a testa acest exemplu. input.txt fișierul creat în exemplul anterior conține două linii goale care pot fi șterse folosind următoarea comandă `sed`. Aici, „^ $” este folosit pentru a afla liniile goale din fișier, input.txt.
$pisicăinput.txt$sed „/ ^ $ / d”input.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
17. Ștergeți toate caracterele neprimabile
Caracterele neprimabile pot fi șterse din orice text prin înlocuirea caracterelor neprimabile cu niciunul. [: print:] clasa este utilizată în acest exemplu pentru a afla caracterele neprimabile. „ T” este un caracter neprimabil și nu poate fi analizat direct prin comanda „echo”. Pentru aceasta, caracterul „ t” este atribuit într-o variabilă, tabul $ care este utilizat într-o comandă „echo”. Ieșirea comenzii `echo` este trimisă în comanda` sed` care va elimina caracterul, „ t” din ieșire.
$filă= $„ t”$aruncat 'Buna ziua$ tabWorld'
$aruncat 'Buna ziua$ tabWorld' | sed 's / [^ [: print:]] // g'
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Prima comandă `echo va imprima ieșirea cu spațiu tab și comanda` sed` va imprima ieșirea după eliminarea spațiului tab.
18. Dacă există o potrivire în linie, adăugați ceva la sfârșitul liniei
Următoarea comandă va adăuga „10” la sfârșitul liniei care conține textul, „Windows” în os.txt fişier.
$pisicăos.txt$sed „/ Windows / s / $ / 10 /”os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzii.
19. Dacă există o potrivire în linie, introduceți o linie înainte de text
Următoarea comandă `sed` va căuta textul,„ PHP este independent de platformă ” în input.txt fișier care a fost creat înainte. Dacă fișierul conține acest text în orice linie, „ PHP este un limbaj interpretat ” va fi inserat înainte de acea linie.
$pisicăinput.txt$sed '/ PHP este independent de platformă / s / ^ / PHP este un limbaj interpretat. N /'input.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
20. Dacă există o potrivire în linie, introduceți o linie după acea linie
Următoarea comandă `sed` va căuta textul,„ Linux ” în dosar os.txt și dacă textul există în orice linie, atunci un nou text, „ Ubuntu ‘Va fi inserat după acea linie.
$pisicăos.txt$sed 's / Linux / & nUbuntu /'os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
21. Dacă nu există un meci, adăugați ceva la sfârșitul liniei
Următoarea comandă `sed` va căuta acele linii în os.txt care nu conține textul, „Linux” și adăugați textul, „ Sistem de operare ‘La sfârșitul fiecărei linii. Aici, ' $ „Simbolul este utilizat pentru a identifica linia în care noul text va fi adăugat.
$pisicăos.txt$sed '/ Linux /! S / $ / Sistem de operare / 'os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Există trei rânduri în fișierul os.txt care nu conține textul, „Linux” și noul text adăugat la sfârșitul acestor rânduri.
22. Dacă nu există o potrivire, ștergeți linia
Creați un fișier numit web.txt și adăugați conținutul următor și ștergeți liniile care nu conțin modelul de potrivire. web.txt HTML 5JavaScriptCSSPHPMySQLJQuery Următoarea comandă `sed` va căuta și șterge acele linii care nu conțin textul,„ CSS ”. $ cat web.txt $ sed ‘/ CSS /! d’ web.txt Ieșire: Următoarea ieșire va apărea după executarea comenzilor de mai sus. Există un singur rând în fișier care conține textul, „CSE”. Deci, ieșirea conține doar o linie.
23. Duplicați textul potrivit după adăugarea unui spațiu după text
Următoarea comandă „sed” va căuta cuvântul „la” din fișier, python.txt iar dacă cuvântul există, atunci același cuvânt va fi inserat după cuvântul de căutare adăugând spațiu. Aici, „&” simbolul este folosit pentru a atașa textul duplicat.
$pisicăpython.txt$sed -Și „s / to / & to / g”python.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor. Aici, cuvântul „către” este căutat în fișier, python.txt iar acest cuvânt există în a doua linie a acestui fișier. Asa de, 'la 'Cu spațiu se adaugă după textul potrivit.
24. Înlocuiți o listă de șiruri cu șirul nou
Trebuie să creați două fișiere listă pentru a testa acest exemplu. Creați un fișier text numit list1.txt și adăugați următorul conținut.
lista de pisici1.txt
1001=>Jafar Ali1023=>Nir Hossain
1067=>John michel
Creați un fișier text numit list2.txt și adăugați următorul conținut.
$ cat list2.txt
1001CSE GPA3,631002CSE GPA3.24
1023CSE GPA3.11
1067CSE GPA3,84
Următoarea comandă `sed` se va potrivi cu prima coloană a celor două fișiere text afișate mai sus și va înlocui textul care se potrivește cu valoarea celei de-a treia coloane a fișierului list1.txt.
$pisicălist1.txt$pisicălist2.txt
$sed „pisicălist1.txt| awk '{print' -e cu / '$ 1' / '$ 3' / '}'„<<<'`cat list2.txt`'
Ieșire:
1001, 1023 și 1067 din list1.txt fișierul se potrivește cu cele trei date ale list2.txt fișier și aceste valori sunt înlocuite cu numele corespunzătoare ale celei de-a treia coloane a list1.txt .
25. Înlocuiți șirul potrivit cu un șir care conține linii noi
Următoarea comandă va prelua intrarea din comanda `echo` și va căuta cuvântul, 'Piton' in text. Dacă cuvântul există în text, atunci un nou text, „Text adăugat” va fi inserat cu linie nouă. $ echo Bash Perl Python Java PHP ASP | sed ‘s / Python / Text adăugat n /’ Ieșire: Următoarea ieșire va apărea după executarea comenzii de mai sus.
26. Eliminați liniile noi din fișier și introduceți o virgulă la sfârșitul fiecărei linii
Următoarea comandă `sed` va înlocui fiecare linie nouă cu o virgulă din fișier os.txt . Aici, -Cu opțiunea este utilizată pentru a separa linia de caracter NULL.
$sed -Cu „s / n /, / g”os.txtIeșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
27. Eliminați virgulele și adăugați linie nouă pentru a împărți textul în mai multe linii
Următoarea comandă `sed` va lua ca intrare linia separată prin virgulă din comanda` echo` și va înlocui virgula cu linia nouă.
$aruncat „Kaniz Fatema, 30, lot” | sed 's /, / n/ g 'Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Textul de intrare conține trei date separate prin virgulă, care sunt înlocuite cu linie nouă și tipărite în trei rânduri.
28. Găsiți potrivirea nesensibilă la majuscule și ștergeți linia
„I” este utilizat în comanda „sed” pentru potrivirea fără majuscule și minuscule care indică ignorarea majusculelor. Următoarea comandă `sed` va căuta linia care conține cuvântul, ‘Linux ‘Și ștergeți linia din os.txt fişier.
$pisicăos.txt$sed „/ linux / Id”os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. os.txt conține cuvântul, „Linux” care se potrivește cu modelul, „linux” pentru căutarea fără majuscule și minuscule și șters.
29. Găsiți o potrivire nesensibilă la majuscule și înlocuiți-o cu text nou
Următoarea comandă `sed` va prelua intrarea din comanda` echo` și va înlocui cuvântul „bash” cu cuvântul „PHP”.
$aruncat „Îmi place programarea bash” | sed „s / Bash / PHP / i”Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Aici, cuvântul „Bash” se potrivește cu cuvântul „bash” pentru căutarea care nu face distincția între majuscule și minuscule și înlocuit cu cuvântul „PHP”.
30. Găsiți potrivire nesensibilă la majuscule și majuscule și înlocuiți cu toate majusculele aceluiași text
„ U” este folosit în `sed` pentru a converti orice text în litere mari. Următoarea comandă `sed` va căuta cuvântul, ‘Linux ' în os.txt fișier și dacă cuvântul există, acesta îl va înlocui cu toate literele mari.
$pisicăos.txt$sed 's / (linux ) / U 1 / Ig'os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Cuvântul „Linux” al fișierului os.txt este înlocuit cu cuvântul „LINUX”.
31. Găsiți o potrivire nesensibilă la majuscule și înlocuiți-o cu toate minusculele din același text
„ THE” este folosit în `sed` pentru a converti orice text la toate literele mici. Următoarea comandă `sed` va căuta cuvântul, „Linux” în os.txt fișier și înlocuiți cuvântul cu toate literele mici.
$pisicăos.txt$sed 's / (linux ) / L 1 / Ig'os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Cuvântul „Linux” este înlocuit cu cuvântul „Linux” aici.
32. Înlocuiți toate caracterele majuscule ale textului cu caractere mici
Următoarea comandă `sed` va căuta toate caracterele majuscule din os.txt fișier și înlocuiți caracterele cu litere mici folosind „ L”.
$pisicăos.txt$sed 's / (. * ) / L 1 /'os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
33. Căutați numărul în linie și adăugați orice simbol valutar înainte de număr
Creați un fișier numit items.txt cu următorul conținut.
items.txt
HDD 100Monitor 80
Mouse 10
Următoarea comandă `sed` va căuta numărul din fiecare linie de items.txt înregistrați și adăugați simbolul monedei, „$” înainte de fiecare număr.
$pisicăitems.txt$sed 's / ([0-9] ) / $ 1 / g'items.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Aici, simbolul „$” este adăugat înainte de numărul fiecărei linii.
34. Adăugați virgule la numerele care au mai mult de 3 cifre
Următoarea comandă `sed` va lua un număr ca intrare din comanda` echo` și va adăuga virgulă după fiecare grup de trei cifre numărând din dreapta. Aici, „: a” indică eticheta și „ta” este utilizat pentru a itera procesul de grupare.
$aruncat „5098673” | sed -Și:la-Și 's / (. * [0-9] ) ([0-9] {3 } ) / 1, 2 /; ta'Ieșire:
Numărul 5098673 este dat în comanda `echo`, iar comanda` sed` a generat numărul 5.098.673 prin adăugarea de virgule după fiecare grup de trei cifre.
35. Înlocuiește caracterul tabului cu 4 caractere spațiale
Următoarea comandă `sed` va înlocui fiecare caracter tab ( t) cu patru caractere spațiale. Simbolul „$” este utilizat în comanda „sed” pentru a se potrivi cu caracterul filă și „g” este utilizat pentru a înlocui toate caracterele filelor.
$aruncat -Și „1 t2 t3 ' | sed$„s / t / / g”Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
36. Înlocuiește 4 caractere spațiale consecutive cu caracter tab
Următoarea comandă va înlocui 4 caractere consecutive cu caracter tab ( t).
$aruncat -Și „1 2” | sed$„s / / t / g”Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
37. Trunchiați toate liniile la primele 80 de caractere
Creați un fișier text numit în.txt care conține liniile mai mult de 80 de caractere pentru a testa acest exemplu.
în.txt
PHP este un limbaj de script pe partea de server.
PHP este un limbaj open-source, iar PHP este sensibil la majuscule și minuscule. PHP este independent de platformă.
Următoarea comandă `sed` va trunchia fiecare linie de în.txt fișier în 80 de caractere.
$sed 's / (^. {1,80 } ). * / 1 /'în.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. A doua linie a fișierului in.txt conține mai mult de 80 de caractere și această linie este trunchiată în ieșire.
38. Căutați un regex șir și adăugați un text standard după acesta
Următoarea comandă `sed` va căuta textul,„ Buna ziua „În textul introdus și adăugați textul,„ Ioan ‘După acel text.
$aruncat 'Salut ce mai faci?' | sed 's / (hello ) / 1 John /'Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
39. Căutați regexul șirului și adăugați text după a doua potrivire din fiecare linie
Următoarea comandă `sed` va căuta textul,„ PHP ‘În fiecare linie de input.txt și înlocuiți a doua potrivire din fiecare linie cu textul, „Text nou adăugat” .
$pisicăinput.txt$sed 's / (PHP ) / 1 (Text nou adăugat) / 2'input.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. Textul de căutare, „ PHP ’Apare de două ori în a doua și a treia linie a input.txt fişier. Deci, textul, „ Text nou adăugat 'Este inserat în a doua și a treia linie.
40. Rularea scripturilor multi-linie `sed` dintr-un fișier
Mai multe scripturi `sed` pot fi stocate într-un fișier și toate scripturile pot fi executate împreună executând comanda` sed`. Creați un fișier numit ‘Sedcmd ‘Și adăugați următorul conținut. Aici, două fișiere „sed” sunt adăugate. Un script va înlocui textul, „ PHP ' de „ASP „Un alt script va înlocui textul,„ independent „După text,„ dependent ‘.
sedcmd
s/PHP/ASP/s/independent/dependent/
Următoarea comandă „sed” va înlocui toate textele „PHP” și „independente” cu „ASP” și „dependente”. Aici, opțiunea ‘-f’ este utilizată în comanda `sed` pentru a executa scriptul` sed` din fișier.
$pisicăsedcmd$sed -fsedcmd input.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
41. Potriviți un model cu mai multe linii și înlocuiți-l cu noul text cu mai multe linii
Următoarea comandă `sed` va căuta textul cu mai multe linii, „Linux nAndroid” și dacă modelul se potrivește, atunci liniile potrivite vor fi înlocuite cu textul cu mai multe linii, ‘Ubuntu nAndroid Lollipop ‘. Aici, P și D sunt utilizate pentru prelucrarea multilinie.
$pisicăos.txt$sed '$! N; s / Linux nAndoid / Ubuntu nAndoid Lollipop /; P; D'os.txt
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
42. Înlocuiți ordinea a două cuvinte dintr-un text care se potrivește cu un model
Următoarea comandă `sed` va prelua introducerea a două cuvinte din comanda` echo` și va înlocui ordinea acestor cuvinte.
$aruncat „perl python” | sed -Și 's / ([^] * ) * ([^] * ) / 2 1 /'Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
43. Executați mai multe comenzi `sed` din linia de comandă
Opțiunea „-e” este utilizată în comanda „sed” pentru a rula mai multe scripturi „sed” din linia de comandă. Următoarea comandă `sed` va prelua un text ca intrare din comanda` echo` și va înlocui „ Ubuntu ' de ' Kubuntu ' și ' sute ' de ' Fedora ‘.
$aruncat „Ubuntu Centos Debian” | sed -Și 's / Ubuntu / Kubuntu /; s / Centos / Fedora / 'Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Aici, „Ubuntu” și „Centos” sunt înlocuite cu „Kubuntu” și „Fedora”.
44. Combinați „sed” cu alte comenzi
Următoarea comandă va combina comanda `sed` cu comanda` cat`. Prima comandă „sed” va prelua datele de la os.txt fișier și trimiteți ieșirea comenzii la a doua comandă „sed” după înlocuirea textului „Linux” cu „Fedora”. A doua comandă „sed” va înlocui textul, „Windows” cu „Windows 10”.
$pisicăos.txt| sed „s / Linux / Fedora /”| sed „s / windows / Windows 10 / i”Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
45. Introduceți o linie goală într-un fișier
Creați un fișier numit stdlist cu următorul conținut.
stdlist
#ID #Nume[101] -Dar
[102] -Neha
Opțiunea „G” este utilizată pentru a insera o linie goală într-un fișier. Următoarea comandă `sed` va insera linii goale după fiecare linie de stdlist fişier.
$pisicăstdlist$sedG stdlist
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus. O linie goală este inserată după fiecare linie a fișierului.
46. Înlocuiți toate caracterele alfanumerice prin spațiu în fiecare linie a unui fișier.
Următoarea comandă va înlocui toate caracterele alfanumerice cu spațiul din stdlist fişier.
$pisicăstdlist$ dar „s / [A-Za-z0-9] // g”stdlist
Ieșire:
Următoarea ieșire va apărea după executarea comenzilor de mai sus.
47. Utilizați „&” pentru a imprima șiruri potrivite
Următoarea comandă va căuta cuvântul care începe cu „L” și va înlocui textul prin adăugare „Șirul potrivit este - „Cu cuvântul asociat utilizând simbolul„ & ”. Aici, „p” este utilizat pentru a imprima textul modificat.
$sed -n 's / ^ L / Șirul potrivit este - & / p'os.txtIeșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus.
48. Comutați perechea de cuvinte într-un fișier
Creați un fișier text numit curs.txt cu următorul conținut care conține perechea de cuvinte din fiecare rând.
curs.txt
PHP ASPMySQL Oracle
CodeIgniter Laravel
Următoarea comandă va schimba perechea de cuvinte din fiecare linie a fișierului, curs.txt .
$sed 's / ([^] * ) * ([^] * ) / 2 1 /'curs.txtIeșire:
Următoarea ieșire va apărea după comutarea perechii de cuvinte din fiecare linie.
49. Scrieți cu majuscule primul caracter al fiecărui cuvânt
Următoarea comandă `sed` va prelua textul de intrare din comanda` echo` și va converti primul caracter al fiecărui cuvânt într-o literă mare.
$aruncat „Îmi place programarea bash” | sed 's / ([a-z] ) [[a-zA-Z0-9] * ) / u 1 2 / g'Ieșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Textul introdus, îmi place programarea bash, este tipărit așa cum îmi place Programarea Bash după ce scriem cu majusculă primul cuvânt.
50. Imprimați numerele de linie ale fișierului
Simbolul „=” este folosit comanda „sed” pentru a imprima numărul liniei înainte de fiecare linie a unui fișier. Următoarea comandă va imprima conținutul os.txt fișier cu număr de linie.
$sed '='os.txtIeșire:
Următoarea ieșire va apărea după executarea comenzii de mai sus. Există patru rânduri os.txt fişier. Deci, numărul liniei este tipărit înainte de fiecare linie a fișierului.
Concluzie:
Utilizările diferite ale comenzii `sed` sunt explicate în acest tutorial folosind exemple foarte simple. Ieșirea tuturor scripturilor `sed` menționate aici sunt generate temporar și conținutul fișierului original a rămas neschimbat. Dar dacă doriți, puteți modifica fișierul original utilizând opțiunea –i sau –in-place a comenzii `sed. Dacă sunteți un nou utilizator Linux și doriți să aflați utilizările de bază ale comenzii `sed` pentru a efectua diferite tipuri de sarcini de manipulare a șirurilor, atunci acest tutorial vă va ajuta. După citirea acestui tutorial, sperăm, orice utilizator va primi conceptul clar despre funcțiile comenzii `sed`.
întrebări frecvente
La ce se folosește comanda sed?
Comanda sed are o serie de utilizări diferite. Acestea fiind spuse, principala utilizare este înlocuirea cuvintelor dintr-un fișier sau găsirea și înlocuirea.
Cel mai bun lucru despre sed este că puteți căuta un cuvânt într-un fișier și îl puteți înlocui, dar niciodată nu trebuie să deschideți fișierul - sed face totul pentru dvs.!
Pe lângă aceasta, poate fi folosit și pentru ștergere. Tot ce trebuie să faceți este să tastați cuvântul pe care doriți să-l găsiți, să îl înlocuiți sau să îl ștergeți în sed și îl aduce pentru dvs. - puteți alege apoi să înlocuiți acel cuvânt sau să ștergeți toate urmele cuvântului din fișierul dvs.
sed este un instrument fantastic pentru a putea înlocui lucruri precum adresele IP și orice altceva sensibil, pe care altfel nu l-ați dori să introduceți într-un fișier. sed este o necesitate pentru orice inginer software!
Ce este S și G în comanda sed?
În termenii săi simpli, funcția S care poate fi utilizată în sed înseamnă pur și simplu „substitut”. După tastarea S puteți înlocui sau înlocui orice doriți - doar tastarea S va înlocui doar prima apariție a cuvântului pe o linie.
Prin urmare, dacă aveți o propoziție sau o linie care o menționează de mai multe ori, funcția S nu este ideală, deoarece va substitui doar prima apariție. Puteți specifica un model pentru ca S să înlocuiască cuvintele la fiecare două apariții.
Specificarea lui G la sfârșitul comenzii sed va face o înlocuire globală (asta înseamnă G). Având în vedere acest lucru, dacă specificați G, acesta va înlocui fiecare apariție a cuvântului pe care l-ați ales, mai degrabă decât prima apariție pe care o face S.
Cum rulez un script sed?
Puteți rula un script sed în mai multe moduri, dar cel mai comun este pe linia de comandă. Aici puteți specifica doar sed și fișierul pe care doriți să utilizați comanda.
Acest lucru vă permite să utilizați sed în acel fișier, permițându-vă să găsiți, să ștergeți și să înlocuiți după cum este necesar.
Puteți să-l utilizați și într-un script shell, și în acest fel puteți transmite orice doriți scriptului, iar acesta va rula comanda Găsire și înlocuire pentru dvs. Acest lucru este util pentru a nu dori să specificați date extrem de sensibile într-un script, astfel încât să le puteți transmite ca variabilă
Rețineți că, desigur, acest lucru este disponibil numai pe Linux și, prin urmare, va trebui să vă asigurați că aveți o linie de comandă Linux pentru a rula scriptul sed.