V tomto článku vám ukážeme, jak spustit vyhledávání řetězců pomocí Grepu s regulárním výrazem, a to tak, že vám poskytneme 10 praktických příkladů jeho implementací. Mnoho příkladů popsaných v tomto článku má praktické důsledky, což znamená, že je můžete použít při každodenním programování Linuxu. Následující ukázky popisují některé příklady regulárních výrazů pro běžně hledané vzory.
Příklad 1: Najděte samostatného charteru v textovém souboru
Chcete-li vypsat řádky v souboru „kniha“, které obsahují znak „$“, zadejte:
$ grep '\ $' knihaPříklad 2: Najděte jeden řetězec v textovém souboru
Výstup řádků v souboru „kniha“, který obsahuje řetězec „14 $.99 ', typ:
$ grep '\ $ 14 \.99 'knihaPříklad 3: Najděte jednoho zvláštního charteru v textovém souboru
Chcete-li vypsat řádky v souboru „kniha“, které obsahují znak „\“, zadejte:
$ grep '\\' knihaPříklad 4: Odpovídající řádky začínající určitým textem
Použijte 'line' v regulárním výrazu k označení začátku řádku.
Chcete-li vypsat všechny řádky v řetězci „/ usr / dict / words“ začínající řetězcem „pro“, zadejte:
$ grep 'ˆpro' / usr / dict / slovaChcete-li vypsat všechny řádky v souboru „kniha“, které začínají textem „na začátku“, bez ohledu na velikost písmen, zadejte:
$ grep -i Kniha „beginningna začátku“POZNÁMKA: Tyto regulární výrazy byly citovány pomocí znaků; je to proto, že některé skořápky jinak považují znak „ˆ“ za speciální „metaznak“
Kromě vyhledávání slov a frází můžete pomocí grepu hledat složité textové vzory zvané regulární výrazy. Regulární výraz - nebo „regexp“ - je textový řetězec speciálních znaků, který určuje a soubor vzorů, které mají odpovídat.
Z technického hlediska jsou vzory slov nebo frází regulárními výrazy - jen velmi jednoduchými. V regulárním výrazu se většina znaků - včetně písmen a čísel - představuje sama. Například vzor regexp 1 odpovídá řetězci '1' a vzoru chlapec odpovídá řetězci 'boy'.
Existuje celá řada vyhrazených znaků nazývaných metaznaky, které se nepředstavují v regulárním výrazu, ale mají speciální význam, který se používá k vytváření složitých vzorů. Jedná se o následující metaznaky: ., *, [, ], ˆ, $ a \. Je dobré si uvědomit, že takové metaznaky jsou běžné téměř u všech běžných a speciálních distribucí Linuxu. Zde je dobrý článek, který pokrývá speciální významy metaznaků a uvádí příklady jejich použití.
Příklad 5: Odpovídající řádky končící určitým textem
Jako poslední znak citovaného textu použijte '$', aby se tento text shodoval pouze na konci řádku. Chcete-li vypsat řádky v souboru, který končí, končící vykřičníkem, zadejte:
$ grep '!$ 'jítPříklad 6: Odpovídající řádky určité délky
Chcete-li spojit řádky určité délky, použijte tento počet '.'znaky mezi' ˆ 'a' $ '- například pro shodu všech řádků, které jsou široké dva znaky (nebo sloupce), použijte' ˆ ... $ 'jako regexp k vyhledání.
Chcete-li vypsat všechny řádky v '/ usr / dict / words', které mají přesně tři znaky, zadejte:
$ grep 'ˆ… $' / usr / dict / slovaU delších řádků je užitečnější použít jiný konstrukt: 'ˆ.\ number \ $ ', kde number je počet řádků, které mají odpovídat. Pomocí ',' zadejte rozsah čísel.
Chcete-li vypsat všechny řádky v '/ usr / dict / words', které jsou široké přesně dvanáct znaků, zadejte:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / slovaChcete-li vypsat všechny řádky v '/ usr / dict / words', které mají šířku dvaadvacet nebo více znaků, zadejte:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / slovaPříklad 7: Odpovídající řádky, které obsahují některý z některých regulárních výrazů
Chcete-li porovnat řádky, které obsahují libovolný počet regexps, zadejte každý regexps, který chcete vyhledat mezi alternativními operátory ('\ |') jako regexp, který chcete vyhledat. Na výstupu budou řádky obsahující libovolný z daných regulárních výrazů.
Chcete-li zobrazit všechny řádky v 'playboy', které obsahují buď vzory 'kniha' nebo 'dort', zadejte:
$ grep 'kniha \ dort' playboyPříklad 8: Odpovídající řádky, které obsahují všechny některé regulární výrazy
Výstup řádků, které se shodují Všechno z řady regexps použijte grep k výstupu řádků obsahujících první regexp, který chcete porovnat, a posuňte výstup na grep s druhým regexp jako argument. Pokračujte v přidávání kanálů k vyhledávání grep pro všechny regexps, které chcete hledat.
Chcete-li zobrazit všechny řádky v „seznamu skladeb“, který obsahuje jak vzory „the shore“, tak „sky“, bez ohledu na případ, zadejte:
$ grep - seznam skladeb 'the shore' | grep -i oblohaPříklad 9: Odpovídající řádky, které obsahují pouze určité znaky
Chcete-li porovnat řádky, které obsahují pouze určité znaky, použijte regexp 'ˆ [znaky] * $', kde znaky jsou ty, které se mají shodovat. Chcete-li v řádku / usr / dict / words zobrazit výstupní řádky, které obsahují pouze samohlásky, zadejte:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / slovaMožnost '-i' odpovídá znakům bez ohledu na velikost písmen; v tomto příkladu se tedy všechny znaky samohlásky shodují bez ohledu na velikost písmen.
Příklad 10: Hledání frází bez ohledu na mezery
Jedním ze způsobů, jak vyhledat frázi, která se může vyskytnout s mezerami mezi slovy nebo přes konec řádku nebo stránky, je odebrat všechny vstupy řádků a mezery navíc ze vstupu a poté grep. Chcete-li to provést, připojte vstup k tr s argumentem "\ r \ n: \> \ | -" k možnosti '-d' (odstranění všech konců řádků ze vstupu); trubka, která do filtru fmt s možností '-u' (výstup textu s jednotnými mezerami); a potrubí, které grep se vzorem hledat.
Chcete-li hledat přes konce řádků řetězec „současně“ v souboru „docs“, zadejte:
$ kočičí dokumenty | tr -d '\ r \ n: \> \ |-'| fmt -u | grep „ve stejnou dobu jako“
souhrn
V tomto článku jsme přezkoumali 10 praktických příkladů použití příkazu Grep Linux pro vyhledávání a hledání řetězců v textovém souboru. Po cestě jsme se naučili, jak používat regulární výrazy ve spojení s Grepem k provádění komplexního vyhledávání v textových souborech. Nyní máte lepší představu o tom, jak výkonné jsou funkce vyhledávání v systému Linux.
Zde jsou další zdroje pro zájemce, kteří se chtějí dozvědět více o programování v systému Linux:
Zdroje pro správce systému
- Příručka správce systému Linux - Co je operační systém Linux a jak funguje
- Příručka správce systému Linux - přehled virtuální paměti Linux a mezipaměti diskových vyrovnávacích pamětí
- Příručka správce systému Linux - Osvědčené postupy pro monitorování systémů Linux
- Příručka správce systému Linux - Osvědčené postupy pro spouštění a vypínání systému Linux
- Příručka správce systému Linux - Osvědčené postupy pro vytváření a správu operací zálohování
Zdroje pro programátory jádra Linuxu
- Jak funguje správa paměti operačního systému Linux
- Komplexní přehled procesů operačního systému Linux Kernel
- Jaké jsou mechanismy za správou úloh jádra Linuxu?
Slovník systému souborů Linux
Komplexní přehled fungování systému souborů a adresářů systému Linux