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:
:znackaumí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.