Desáté cvičení – Pokračování sedu
Úvod je stejný, jako u devátého cvičení.
Jak spustit sed:
sed 'prikaz' [vstupni_soubor1...]
sed -f soubor_s_prikazy [vstupni_soubor1...]
sed -e 'prikazy' -f soubor_s_prikazy [vstupni_soubor1...]
Tvar příkazu:
adresa1[,adresa2]prikaz[parametry]
Určení adresy:
- Číslo řádku
$
– poslední řádek/regex/
– regulární výraz
Příkazy:
Zobrazit/skrýt staré příkazyNovinka – Značky, skoky a podmínky:
:znacka
umístí značku na toto místo posloupnosti příkazůb znacka
(branch) skočí na značkuznacka
(nepodmíněný skok)t znacka
(test) skočí na značkuznacka
, pokud došlo od posledního skoku k úspěšné substituci (podmíněný skok)T znacka
(^test) skočí na značkuznacka
, pokud NEdošlo od posledního skoku k úspěšné substituci (podmíněný skok)
Příklady:
- Napište příkaz sedu, který vypíše řádky na vstupu v opačném pořadí (podobně, jako příkaz
tac
) - Stáhněte si ukázkový email s hlavičkami (nebo použijte vlastní) a:
- Vypište pouze tělo emailu (bez hlaviček)
- Vypište pouze hlavičky
From:
,To:
,Subject:
a pak tělo emailu
- Vymyslete sedový skript, který bude odstraňovat komentáře ze shellových souborů:
- Komentáře jsou vše za znakem
#
(ignorujte uvozovky a podobné, ať je to jednoduché) - Pokud řádek obsahoval jenom komentář (a mezery/tabulátory před ním), tak ho vymažte celý
- Pokud první řádek obsahuje shebang (
#!/...
), tak ho tam nechte
- Komentáře jsou vše za znakem
- Vymyslete sedový skript normalizující adresy v souborovém systému. Měl by tedy dělat:
/etc/./././passwd
→/etc/passwd
/usr/local/bin/../../bin/
→/usr/bin
- Vymyslete sedový skript, který bude mazat nadbytečné prázdné řádky – tedy každou posloupnost za sebou jdoucích prázdných řádků změní na jediný prázdný řádek.