Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Tipy a Triky
Obcování s ďáblem 21:K čemu je dobrý grep...
13. prosince 2001, 00.00 | V několika předcházejících dílech jsme se zabývali regulárními výrazy. Teď se seznámíme s některými příkazy, jež s regulárními výrazy pracují, a umožňují nám jejich sílu využít. První grep
V několika předcházejících dílech jsme se zabývali regulárními výrazy. Teď se seznámíme s některými příkazy, jež s regulárními výrazy pracují, a umožňují nám jejich sílu využít.
Asi nejjednodušší jsou příkazy grep, fgrep a egrep. V principu jde pořád o jeden a ten samý příkaz, který vybírá ze zadaných souborů (nebo ze standardního vstupu) ty řádky, které odpovídají zvolenému regulárnímu výrazu — vzpomeňme si na příklady hledání citátů Shakespeara, třeba ve dvanáctém dílu:
126> grep Polonius Hamlet/* | grep Ophelia | grep -v Rosencrantz
Hamlet/1.2: as Polonius, his son Laertes and daughter Ophelia,\
127>
Dnes se podrobněji seznámíme s různými přepínači a modifikátory grepu, o kterých jsme se dříve zmiňovali jen zběžně.
Grep je grep je grep
Ačkoli máme k dispozici tři různé příkazy, ve skutečnosti jde o jeden jediný program — fgrep je ekvivalentní příkazu "grep -F"; podobně egrep odpovídá příkazu "grep -E". Rozdíl mezi grepem a egrepem už známe: spočívá jen v tom, že grep pracuje se základními regulárními výrazy a egrep s rozšířenými.
Trochu jinak je tomu s příkazem fgrep. Ten vlastně regulární výrazy jako takové ani neumí — regulárním výrazem pro něj je fixní (proto "-f") textový řetězec, nebo nanejvýš několik řetězců ve významu "nebo" (oddělených konci řádků, ne znaky '|'!). Díky tomuto omezení však nad rozsáhlým vstupem umí být o poznání rychlejší, než "normální grepy".
Suma sumárum, v nejběžnějších případech, kdy hledáme pouze pevný řetězec (jako tomu bylo třeba ve výše uvedeném příkladu s Hamletem) je vhodné používat fgrep. Kdykoli jindy si vybereme grep nebo egrep podle toho, zda nám pro daný účel lépe vyhovují základní nebo rozšířené regulární výrazy.
Základní přepínače
Mezi nejčastěji používané přepínače příkazů grep patří
- "-a": zpracovat libovolný soubor jako textový. Příkaz grep si občas splete soubory, obsahující české znaky, s binárními; proto bývá tento přepínač šikovný;
- "-c": spočítat vypsané řádky. Téhož efektu bychom samozřejmě mohli dosáhnout přesměrováním výstupu grepu do příkazu "wc -l", ale tohle je kratší a rychlejší;
- "-f soubor": regulární výraz není zadán v příkazovém řádku, ale načte se ze zadaného souboru. Ten může obsahovat více výrazů na více řádcích;
- "-i": nerozlišovat malá a velká písmena;
- "-l": namísto nalezených řádků vypisovat jen jména souborů, jež obsahují alespoň jeden nalezený řádek;
- "-q" a "-s": nevypisovat nic (-s potlačí i chybová hlášení). To je výhodné, pokud používáme příkaz grep jen pro jeho návratovou hodnotu (0 — tj. "v pořádku" — když se něco našlo), jak jsme si několikrát ukázali v souvislosti s příkazem find např. v patnáctém dílu;
- "-v": invertovat, tj. naleznou se jen ty řádky, které regulárnímu výrazu neodpovídají.
Grep už vlastně dobře známe...
...protože skutečně patří mezi nejběžnější příkazy, a proto jsme jej používali v příkladech už dávno. Dnes jsme se toho tedy vlastně moc nedozvěděli; příště se zato podíváme na jeden z nejsilnějších příkazů vůbec — na dávkový editor sed.
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová