Uneori trebuie să eliminăm o anumită linie dintr-unul sau mai multe fișiere. De exemplu, am avut o listă întreagă de fișiere și trebuie să elimin linia #27 din toate (linia #27 este un ACL, o regulă, o configurație). Pot fie să editez fișier cu fișier, fie pot pur și simplu să obțin ceea ce am nevoie folosind comanda sed și un script bash (opțional).
Dar, să încercăm un singur fișier oarecum simplu.
Avem fișierul distros-deb.txt care conține următoarele:
Debian
ubuntu
ArchLinux
soluze
mentă
Cu alte cuvinte, fișierul distros-deb.txt este locul unde vom lista distribuțiile bazate pe Debian, dar vedem că linia #3 conține „archlinux”, o distribuție care în mod clar nu are nicio legătură cu Debian, așa că trebuie să eliminăm acea linie. Pentru a elimina linia #3 din acel fișier, vom adăuga următoarele:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Explicarea acestei linii este simplă: cu `sed "3d"` indicăm că vom șterge linia #3, cu `distros-deb.txt` îi spunem asupra cărui fișier să lucreze, adică să șteargă linia #3 din acest fișier. Până în acest punct, dacă apăsăm `<kbd>Enter</kbd>`, ne va arăta ce dorim, dar în terminal, așa că cu `> distros-deb-ok.txt` indicăm că, în loc să afișeze rezultatul în terminal, ar trebui să îl pună într-un fișier cu acest nume.
Ce este simplu?
De asemenea, putem evita utilizarea fișierului > distros-deb-ok.txt folosind un parametru sed , parametrul -i
Cu alte cuvinte, dacă vrem să eliminăm linia din fișier și să o salvăm cu același nume (și nu într-un alt fișier), trebuie pur și simplu să adăugăm parametrul -i :
sed -i "3d" distros-deb.txt
Aceasta va elimina linia # 3 din distros-deb.txt și o va salva.
Ce se întâmplă dacă vreau o gamă de linii, adică să elimin linia # 3, dar și # 4 și # 5? Pentru a realiza acest lucru, punem intervalul de la 3 la 5, adică:
sed -i "3,5d" distros-deb.txt
Și îmi va arăta doar debian și kubuntu
Deci, dacă vreau să șterg de la linia 2 până la ultima, când nu știu liniile totale?
Folosiți doar simbolul dolar - »$
sed -i "2,$d" distros-deb.txt
În cazul în care doriți să eliminați de la prima linie la # 4, atunci pur și simplu punem valoarea 1 la început:
sed -i "1,4d" distros-deb.txt
Cam asta e tot, un sfat destul de util atunci când vrei să scrii scripturi bash pentru a automatiza sarcini și trebuie să modifici și să ștergi linii din fișierele de configurare. Pentru a modifica, putem folosi sed sau perl , iar pentru a șterge, știm deja cum să o facem cu sed.
În ceea ce priveşte