Niekedy potrebujeme odstrániť konkrétny riadok z jedného alebo viacerých súborov. Napríklad, mal som celý zoznam súborov a potrebujem odstrániť riadok č. 27 zo všetkých (riadok č. 27 je ACL, pravidlo, konfigurácia). Môžem buď upravovať súbor po súbore, alebo jednoducho dosiahnuť to, čo potrebujem, pomocou príkazu sed a bash skriptu (voliteľné).
Vyskúšajme však trochu jednoduchý súbor.
Máme súbor distros-deb.txt , ktorý obsahuje toto:
debian
kubuntu
Arch Linux
solúzy
mäta
Inými slovami, súbor distros-deb.txt je miestom, kde vypíšeme distribúcie založené na Debiane, ale vidíme, že riadok č. 3 obsahuje „archlinux“, distribúciu, ktorá zjavne nemá nič spoločné s Debianom, takže musíme tento riadok odstrániť. Ak chceme riadok č. 3 z tohto súboru odstrániť, pridáme nasledovné:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Vysvetlenie tohto riadku je jednoduché: pomocou `sed "3d"` označujeme, že vymažeme riadok č. 3, pomocou `distros-deb.txt` označujeme, s ktorým súborom má pracovať, teda má vymazať riadok č. 3 z tohto súboru. Doteraz, ak sme stlačili `<kbd>Enter</kbd>`, zobrazovalo sa nám to, čo chceme, ale v termináli, takže pomocou `>distros-deb-ok.txt` označujeme, že namiesto zobrazenia výsledku v termináli by sa mal uložiť do súboru s týmto názvom.
Čo je jednoduché?
Používaniu súboru > distros-deb-ok.txt sa môžeme vyhnúť aj použitím parametra sed , parametra -i .
Inými slovami, ak chceme odstrániť riadok zo súboru a uložiť ho s rovnakým názvom (a nie do iného súboru), stačí pridať parameter -i :
sed -i "3d" distros-deb.txt
Týmto sa odstráni riadok č. 3 z distros-deb.txt a uloží sa.
Čo ak chcem rozsah riadkov, to znamená odstránenie riadku # 3, ale aj # 4 a # 5? Aby sme to dosiahli, dali sme rozsah od 3 do 5, to znamená:
sed -i "3,5d" distros-deb.txt
A ukáže mi to len debian a kubuntu
No a čo ak chcem vymazať z riadku 2 do posledného, keď neviem súčet riadkov?
Stačí použiť symbol dolára - »$
sed -i "2,$d" distros-deb.txt
Ak chcete vylúčiť z prvého riadku na # 4, potom jednoducho dáme hodnotu 1 na začiatok:
sed -i "1,4d" distros-deb.txt
To je v podstate všetko, celkom užitočný tip, keď chcete písať bash skripty na automatizáciu úloh a potrebujete upravovať a mazať riadky v konfiguračných súboroch. Na úpravu môžeme použiť sed alebo perl a na mazanie už vieme, ako to urobiť pomocou sed.
pozdravy