Ponekad trebamo ukloniti određeni red iz jedne ili više datoteka. Na primjer, imao sam cijelu listu datoteka i trebam ukloniti red #27 iz svih njih (red #27 je ACL, pravilo, konfiguracija). Mogu uređivati datoteku po datoteku ili jednostavno postići ono što mi treba pomoću sed naredbe i bash skripte (opciono).
Pokušajmo sa jednom datotekom donekle jednostavno.
Imamo datoteku distros-deb.txt koja sadrži sljedeće:
debian
ubuntu
archlinux
solusi
mente
Drugim riječima, datoteka distros-deb.txt je mjesto gdje ćemo navesti distribucije bazirane na Debianu, ali vidimo da redak #3 sadrži "archlinux", distribuciju koja očito nema nikakve veze s Debianom, tako da moramo ukloniti taj redak. Da bismo uklonili redak #3 iz te datoteke, dodat ćemo sljedeće:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Objašnjenje ove linije je jednostavno: sa `sed "3d"` označavamo da ćemo izbrisati liniju #3, sa `distros-deb.txt` govorimo na kojoj datoteci da radi, odnosno da izbriše liniju #3 iz ove datoteke. Do ove tačke, ako pritisnemo `<kbd>Enter</kbd>`, prikazaće nam šta želimo, ali u terminalu, pa sa `>distros-deb-ok.txt` označavamo da umjesto prikazivanja rezultata u terminalu, treba da ga stavi u datoteku sa ovim imenom.
Šta je jednostavno?
Također možemo izbjeći korištenje datoteke > distros-deb-ok.txt korištenjem sed parametra , parametra -i .
Drugim riječima, ako želimo ukloniti liniju iz datoteke i sačuvati je pod istim imenom (a ne u drugoj datoteci), jednostavno trebamo dodati parametar -i :
sed -i "3d" distros-deb.txt
Ovo će ukloniti red # 3 iz distros-deb.txt i spremiti ga.
Šta ako želim raspon linija, to jest ukloniti liniju # 3, ali i # 4 i # 5? Da bismo to postigli stavili smo raspon od 3 do 5, to jest:
sed -i "3,5d" distros-deb.txt
I prikazat će mi samo debian i kubuntu
Pa šta ako želim izbrisati iz reda 2 u zadnji, kad ne znam ukupan broj redova?
Samo upotrijebite simbol dolara - »$
sed -i "2,$d" distros-deb.txt
U slučaju da želite eliminirati iz prvog retka u # 4, tada na početak jednostavno stavimo vrijednost 1:
sed -i "1,4d" distros-deb.txt
To je otprilike to, prilično koristan savjet kada želite pisati bash skripte za automatizaciju zadataka i trebate modificirati i brisati linije u konfiguracijskim datotekama. Za modificiranje možemo koristiti sed ili perl , a za brisanje već znamo kako to učiniti sa sed-om.
Saludos