Cislovani je asi jine nez na cviceni. (1) V souboru nahradte C++kove komentare '// ...' Cckovymi '/* ... */'. (2) Vypiste pid, spotrebovany cas a cmdline peti procesu, ktere spotrebovaly nejvice procesoroveho casu. (3) Naimplementujte grepovani v sedu. (4) Ze souboru (a) vyhazejte vsechny komentarove radky (/^#/) (b) a take vsechny komentare /#.*/ (pozor na prazdne radky) ----------------------------------------------------------------------- ----------------------------------------------------------------------- Reseni: (1) Zadna velka veda... sed 's,//\(.*\),/*\1 */,' Poznamky: (i) sedove skripty je rozumne vzdy psat v apostrofech. Vzdy. Jinak se uquotujete a stejne na neco vzdycky zapomenete. Pokud potrebujete do skriptu vlozit treba promnenou, je uz vetsinou lepsi to napsat jako sed 'skript...'"$var"'...jede dal' (ii) U prikazu 's' (substituce) se obvykle parametry oddeluji lomitky, lze ovsem pouzit jakykoliv znak, coz lze vyhodou pouzit prave v pripade, kdy se nam uvnitr vyskytuje hojnost lomitek. Jinak bychom pred kazde lomitko v parametrech museli strcit backslash (\). (iii) .* je hladove, namatchuje tedy, co nejvic muze - tudiz od prvniho // az po konec radky (je tedy na konec regexpu mozne napsat $, ale neni to nutne). (iv) V replacement casti (druhy parametr) jiz neni potreba psat backslashe pred * a podobne znaky se specialnim vyznamem v regexpech, replacement regexp neni. (2) Tohle slo resit mnoha zpusoby (napriklad vyuzit toho, ze spotrebovany cas je hned pred cmdline, coz bylo ovsem kouzlo nechteneho), nejflexibilnejsi (co se tyce vypisovanych sloupcu a trideni) by vypadalo nejak jako ps ax -o pid,time,cmd | tail -n +2 | sort -r -k 2 | head ps ax vypise vsechny procesy v systemu, -o upravi format, tail zahodi hlavicku, sort setridi podle time a head vypise prvnich pet procesu. (3) Oddechova ulozka: sed -n '/vyraz/p' (4) Konecne neco malinko zajimaveho. Vsechny komentarove radky vyhazeme pomoci sed '/^#/d' a vsechny komentare pomoci sed 's/#.*//' kterezto reseni ma vsak tu nevyhodu, ze nam po radcich, ktere jsou cele komentari, zustane prazdne misto. Staci ale nejdrive prvnim skriptem vyhodit tyto radky, a druhy skript pustit az na vysledek prvniho.