GNU/Linux >> Znalost Linux >  >> Linux

Manipulace s textem pomocí sed a grep

Nástroje jako sed (editor streamu) a grep (globální tisk regulárních výrazů) jsou účinnými způsoby, jak ušetřit čas a zrychlit práci. Než se ponořím hluboko do případů použití, rád bych stručně vysvětlil regulární výrazy (regexy), které jsou nezbytné pro manipulaci s textem, kterou uděláme později.

Co jsou regulární výrazy? Když se zabýváme log soubory, textovými soubory nebo částí kódu, my

musíte pochopit, že všechny tyto sestávají ze znaků. Když je délka souboru velká, stává se nutností odfiltrovat určité vzory, aby bylo ladění jednodušší. V těchto případech použití naleznete příklady regulárních výrazů.

Skupina 1:Data serveru

Řekněme, že máte soubor s výskytem řetězce:

Nyní, jak odfiltrujete site1 podrobnosti (výše uvedený soubor je jednoduchý příklad), abyste mohli získat pouze nezbytné informace a manipulovat se záznamy?

Jasně vidíme, že v celém souboru existuje společný vzor („nasazení cloudu“). Nyní tedy můžeme použít techniky filtrování k získání informací ze souboru pomocí grep . Pamatuji si to jako "získat regulární výraz n tisk."

Případ použití 1

Pokud chci servery z různých regionů, mohu použít grep následovně:

Případ použití 2

Nyní řekněte, že víte, že chcete odfiltrovat servery na základě IP. Totéž můžete provést pomocí:

Případ použití 3

Nyní se podívejte na první grep příkazový obrázek. Přestože jste znali rozsah podsítě vašeho systému, příkaz vypsal v celém souboru výskyt 10.1.

Jak můžete vyřešit tento typ případu použití? Tento problém můžeme vyřešit pomocí pokročilého filtrování založeného na regulárních výrazech, jako je toto:

Tento příklad je pouze možným použitím grep . Opět, protože se jedná o relativně malý soubor, můžete získat to, co chcete, pomocí toho, co je uvedeno výše. -v přepínač obrátí vyhledávací kritéria, což znamená, že grep prohledá soubor sed-grep.txt a vytiskne všechny podrobnosti kromě <search-pattern> (v tomto případě 10.1).

Případ použití 4

Řekněme, že chcete nahradit adresy IP a přesunout všechny servery v těchto oblastech do jiné podsítě. Můžete použít sed pro tento případ použití.

Z manuálové stránky sed používá formát:

sed [options] commands [file-to-edit]

Náš příkaz pro tento případ použití může vypadat takto:

Tento příkaz se dělí následovně:

  • Znaky s znamená náhražku.
  • % je oddělovač (zde můžeme použít libovolné znaky).
  • <search pattern> objeví se za prvním % .
  • <replace pattern> se objeví za druhým % .
  • g znamená globální nahrazení (což znamená v celém souboru).

Nebo:

s%<search-pattern>%<replace-pattern>%g

Případ použití 5

Můžete dokonce změnit regiony serverů v souboru:

Případ použití 6

Tento případ použití je pokročilejší. Odebereme pouze komentáře (# ) ze souboru pomocí sed :

Tento příkaz říká, že if # se objeví jako první znak řádku, aby byl tento řádek nahrazen mezerou. Výsledkem je, že tento příkaz odstraní komentáře ze souboru.

Skupina 2:/etc/passwd

Podívejme se na další případy použití, tentokrát zahrnující /etc/passwd .

Případ použití 1

Předpokládejme, že chcete získat uživatele ze souboru /etc/passwd soubor. Můžete použít sed takto:

Případ použití 2

Co když chcete získat pouze prvních 10 uživatelů z /etc/passwd ? Můžete použít sed a awk pro tento účel (prosím mějte strpení): 

Tento příkaz se dělí takto:

  • sed -n znamená netisknout vše.
  • p vytiskne řádky od 1 do 10.
  • awk zde používá : jako oddělovač polí a vytiskne první sloupec.

Případ použití 3

Smažte určitý rozsah řádků v textových souborech pomocí sed :

Případ použití SELinux

Zde je příklad sed příkaz pro manipulaci se SELinux:

Závěr

Toto je můj pokus poskytnout vám čtenářům jen malý náhled na možnosti použití sed a grep . Pomocí těchto příkazů můžete provádět mnoho textových manipulací. Chcete-li se dozvědět více, podívejte se na různé možnosti pomocí manuálové stránky.

[Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si jej nyní zdarma.]


Linux
  1. Jak vložit text na začátek souboru?

  2. Při přidávání textu před nějaký vzor použijte sed s ignorováním velkých a malých písmen

  3. Najděte a nahraďte text v souboru mezi rozsahy řádků pomocí sed

  1. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  2. AWK a názvy souborů s mezerou.

  3. grep dvojice vzorů a souboru

  1. Jak nahradit text podobný sedu pythonem?

  2. Odstraňte výskyty řetězce v textovém souboru

  3. sed s doslovným řetězcem--ne vstupním souborem