Cislovani je stejne jako na cviceni, protoze jsme toho udelali tak pateticky malo, ze tezko lze co splest... Jak vypada mail (zprava elektronicke posty)? Nazev: Hodnota From: pasky@ucw.cz To: forst@ms.mff.cuni.cz Subject: Neco, uz se mi chce spat... Dobry den, rad bych... Dekuji a spanembohem. Mail se deli na hlavicku a telo, hlavicka je vse az po prvni radek a telo naopak vsechno za prvnim radkem. (1a) Z mailu vypise pouze hlavicku. (1b) Z mailu vypiste pouze telo. (2) Otevrte si vi se vsemi soubory v aktualnim adresari i podadresarich, ktere obsahuji retezec 'funkce'. To je velice prakticke pri skutecnem vyvoji, napriklad menite pocet parametru funkce a potrebujete si projit cely zdrojak v mnoha souborech a vsude volani funkce upravit. Proto predpokladejte, ze souboru nebude nijak moc a nebudou obsahovat mezery. Pozn.: Grep umi hledat i rekurzivne, je-li zavolan s parametrem -r na adresar (ale rozmyslete si, jak to udelat bez rekurzivniho grepu). ----------------------------------------------------------------------- ----------------------------------------------------------------------- Reseni: (1a) Naivni a zaroven velmi dobre fungujici reseni - proste jak byste to resili v "normalnim" programovacim jazyce - nacitali byste, dokud byste nenatrefili na prazdnou radku. sed '/^$/q' Tzv. "inklusivni reseni" funguje podobne, defaultne nevypisujeme nic a podle rozsahu dvou adres rekneme, co se vypisovat ma: sed -n '1,/^$/p' (1 oznacuje prvni radek, neboli zacatek souboru.) Takovehle reseni je intuitivnejsi a snadneji se na nej tedy prijde, ovsem vypise i ten matchnuty prazdny radek, coz nemusi by tvzdy prakticke. To resi exklusivni reseni, ktere defaultne vypisuje vse, a pomoci rozsahu je naopak urceno, co vypisovat nema: sed '/^$/,$d' ($ oznacuje posledni radek, neboli konec souboru.) (1b) Symetricky: sed -n '/^$/$p' nebo sed '1,/^$/d' (2) Nic svetoborneho, pouze opakovani grepu: vi `grep -r funkce . | cut -d : -f 1 | uniq` Uniq volame, abychom soubor s vice vyskyty funkce needitovali vicekrat, predtridit si vystup nemusime, protoze grep hleda postupne v jednotlivych souborech a tak vsechna jmena jednoho souboru uz budou za sebou.