No ono je to solidně popsáno v knize Linux v kostce (včetně awk, ed, ex, vi a dalších), ale je fakt, že tam se moc nepopisuje jak to tam uvnitř funguje. Asi si ten článek budu muset přečíst ještě jednou. Nějak mi to stále hlava nebere, jak ten sed vlastně ten soubor zpracovává.
Myslím si, že knih o UNIXu - Linuxu včetně manuálových stránek existuje dost. Od roku 1989 - sborník od Kancelářských strojů - UNIX, 1990 - Brodský, Skočovský - UNIX a jazyk C, 1992 - Antony,Muller,Hoke - UNIX System 5 - Gradatim, 1993 - už nevím kdo UNIX BSD - Grada - a tak dále, stačí jenom trochu se rozhlédnout. Víceméně ve všech knihách jsou všechny UNIXové příkazy popsané a většinou i s principem, jak přesně pracuje. Ve většině jsou i principy UNIXu jako takového, IPC (share memory, semafory, pipy a další legrace kolem), funkce jádra, někde i systém cally a jejich funkce atd..
Tím nechci shazovat tento článek, jenom že nepřináší nic nového.
Řeč byla o manuálových stránkách ne o literatuře o Unixu. Ale i těch knih je zoufale málo a jedna opisuje druhou. Navíc jsou psány odborníky a něco z nich skutečně pochopit je téměř nemožné. Dejte je přečíst někomu, kdo o unixu téměř nic neví. U každého odstavce se vás zeptá, jak je to myšleno. Někomu, kdo má za sebou vysokou školu a léta praxe se to možná zdá jasné a snadné, ale ten už si své znalosti pracně léty posbíral kde se dalo.
Ale právě v těch knihách jsou příkazy popsané jako v manuálových stránkách, navíc ještě doplněné o příklady a vysvětlení principu. Pokud to někdo z nich nepochopí, pak to nepochopí ani z tohohle článku.
A o české manuálové stránky na internetu také není nouze - v univerzitních prostředích jsou poměrně hodně zveřejňované různé diplomky aj. na tato témata, je pravda že vysvětlení příkazu mv tam nenajdete - ale najdete ho v té knize. Jinak jsou na internetu manuálové stránky na http://www.ctyme.com/linuxdoc.htm. No a pochopitelně i man stránky v samotné instalaci.
Ale ano, článek vysvětluje podstatu fungování. Manuály jsou jen referenční příručkou pro toho, kdo již příkaz zná nebo toho, kdo se chce rychle seznámit s jednoduchým využitím příkazu. Ani tisíce příkladů použití nemusí vysvětlit princip. A bez toho to prostě nejde. Principem rozumím to, jak něco uvnitř funguje. Z toho je možné ostatní odvodit a při dalším popisu se na tento princip odkázat. Když se člověk podívá na jakoukoliv diskusní skupinu o Linuxu, vidí jak empirické a povrchní jsou znalosti o něm.
Ano, google a pevná linka za pár korun je silný nástroj na každý problém. Zejména pokud člověk dokonalé ovládá angličtinu, aby pochopil něco, co se těžko chápe i v rodném jazyce. Stránku jsem porovnal s článkem. Článek výrazně vede a navíc manuálová stránka, kterou člověk najde ve většině distribucí Linuxu vypadá jinak.
> a navíc manuálová stránka, kterou člověk najde ve
> většině distribucí Linuxu vypadá jinak.
to bude tym, ze ta manualova stranka je zo Solarisu.
ak mate problem pochopit anglicku manualovu stranku, toto sa vam iste bude pacit:
http://www.opengroup.org/onlinepubs/007904975/utilities/sed.html
Tak jsem si ted udelal takovy maly pokus (ktery si necini naroky byt reprezentativni, ale preci neco vypovida): Jednoduche nahrazovani retezce (the za a v anglickem textu cca 18MB). Perl to ma kolem 1.15u+0.1s, sed za 1.3u+0.1s. (u=user, s=system cas). Ohledne pameti: RSS je u sedu 7288, u perlu 1020.
Toz tedy nevim, co je vlastne overkill :-)))
Mno. Já sem napopuloval ~/buff 1000 kopiemi souboru /usr/share/doc/sed-4.0.5/NEWS ;)
a pustil toto:
vidlak:~/buff$ time for file in *orig; do cat $file | sed -e 's/the/a/g' > $file.sed ;done
real 0m10.953s
user 0m5.930s
sys 0m5.020s
a toto:
vidlak:~/buff$ time for file in *orig; do cat $file | perl -p -i -e 's/the/a/g' > $file.perl ;done
real 0m14.536s
user 0m8.010s
sys 0m6.510s
Na RH7.3 (/usr/share/doc/sed-4.0.5/NEWS ;) a rychlejším stroji to dopadlo pro sed:
real 0m3.732s
user 0m1.660s
sys 0m4.330s
pro perl:
real 0m6.353s
user 0m2.700s
sys 0m6.270s
Chápu, že to není dobrý příklad (jeden ze zbytečných catů kolem nás), ale o něčem to taky vypovídá, když už si budeme lhát pomocí benchmarků :)
Hlavně, sed je všude. Pokud se vyskytujete jen v linuxovém světě, na dost rychlých strojích, a občas se vrtáte ve _velkých_ souborech, tak to může být asi jedno, ale...
No prostě vždycky je to něco za něco a na něco. Nezatracoval bych sed jenom proto, že na něj není vidět. Uff.
Jasne, kazdy nastroj ma sve pouziti. Jen jsem chtel poukazat na to, ze perl umi to co sed + jeste spoustu dalsich veci, to byl smysl meho prispevku. A mimochodem - vase srovnani rika to co jsem rikal vyse - perl ma pomalejsi startup. A take jsem psal, ze v priklade jako je ten ktery jste zde uvedl by nebylo od veci napsat i tu smycku v perlu, to by asi bylo rychlejsi nez bash+sed.
Myslim si, ze clanek je psan prilis nahusto. Vhodnejsi mi pripada postup, kdy se na konkretnich prikladech predvadeji jednoduche zpusoby pouziti postupne stale slozitejsi. Zacal bych treba prikladem, ktery odstrani ze vstupu retezec. Pak treba neco co nahrazuje retezec. Ukazal to v kolone s find pro automaticke nahrazovani textu ve vice souborech, atd... Prelozeny MAN je prilis huste ctivo. Podivejste se treba jak Satrapa vysvetloval VIM. Hezky postupne od ulnych zakladu.
Jakypak prispevek k okurkove sezone? Presne takove clanky tu podle me patri (na rozdil od tech sra?ek kolem sco, ktere jsou vsechny stejne nudne uz nekolik mesicu).
Jen prosim vice prikladu. Takhle to pripomina manualovou stranku a z nekterych popisu je tezke si predstavit, co to vlastne dela.