Skip to main content

Példa a Linux grep parancs használatára

Slide01 - WordNet (Április 2025)

Slide01 - WordNet (Április 2025)
Anonim

A Linux grep parancsot a bemenetek szűrésére használják. A GREP a Global Regular Expression Printer (globális rendszeres expressziós nyomtató) kifejezésre utal, ezért annak hatékony használata érdekében ismernie kell a rendszeres kifejezéseket.

Ebben a cikkben számos példát fog megtudni, amelyek segítenek megérteni a grep parancsot.

01/09

Hogyan kereshetünk egy karakterláncot egy fájlban a GREP használatával?

Képzeld el, hogy van egy szövegfájl nevű könyve a következő gyermekkönyvekkel:

  • Robin Hood
  • Piroska
  • Pán Péter
  • Boglárka és a három medve
  • Hófehérke és a hét törpe
  • Pinnochio
  • A macska a kalapban
  • A három kismalac
  • A Gruffalo
  • Charlie és a csoki gyár

Ha a könyvben a "The" szavakat szeretné megtalálni, a következő szintaxist kell használni:

grep A könyvek

A következő eredmények lesznek visszaadva:

  • Boglárka és a három medve
  • Hófehérke és a hét törpe
  • A macska a kalapban
  • A három kismalac
  • A Gruffalo
  • Charlie és a csoki gyár

Minden esetben a "The" szó kiemelésre kerül.

A keresés a kis-és nagybetűkre érzékeny, ezért ha az egyik cím "A" helyett "A" lett volna, akkor nem lett volna visszaadva.

Az eset figyelmen kívül hagyásához hozzáadhatja a következő kapcsolót:

a könyveket a "signore-case" -ra

A -i kapcsolót az alábbiak szerint is használhatja:

grep -i a könyvek

Olvass tovább az alábbiakban

02/09

Keresés egy karakterláncot egy fájlban a wildcards használatával

A grep parancs nagyon erős. Az eredmények szűréséhez számos minta-illesztési technikát használhat.

Ebben a példában megmutatom, hogyan kereshetsz egy karakterláncot egy fájlban a helyettesítő karakterekkel.

Képzeld el, hogy van egy fájl, melynek neve a következő skót helynevekkel:

AberdeenAberystwythAberlourInverurieInvernessNewburghúj szarvasúj gallowayGlasgowEdinburgh

Ha meg szeretné találni a neveket tartalmazó inverz helyeket, használja a következő szintaxist:

grep inver * helyeken

A csillag (*) helyettesítő értéke 0 vagy több. Ezért ha van egy helyed, amelyet Inverness néven neveznek, akkor mindkettőt visszaadják.

Egy másik helyettesítő karakter lehet az időszak (.). Ezt felhasználhatja egyetlen betűhöz.

grep inver.r helyeken

A fenti parancs találta volna a helyeket inverurie és inverear, de nem talál invereerie, mert csak egy helyettesítő a két r között, mint az egyetlen időszak.

A helyettesítő periódus hasznos, de problémákat okozhat, ha az egyik a keresett szöveg részeként.

Például nézze meg a domainnevek listáját

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

A .com-t megtalálva csak a következő szintaxissal lehet keresni:

grep * about * domainnevek

A fenti parancs leesne, ha a lista a következő nevet tartalmazta:

  • everydaylinuxuser.com/about.html

Ezért a következő szintaxist próbálhatja ki:

grep * about.com domainnevek

Ez rendben működne, hacsak nem volt olyan domain, amelynek neve a következő:

aboutycom.com

Ahhoz, hogy valóban megkeressük a .com kifejezést, a következőképpen kell elmenekülnünk a ponttól:

grep * about .com domainnames

A végső helyettesítő karakter, amely megmutatja Önt, egy olyan kérdőjel, amely nulla vagy egy karaktert jelent.

Például:

grep? ber helynevek

A fenti parancs visszatér aberdeen, aberystwyth vagy akár berwick.

Olvass tovább az alábbiakban

03/09

Keresés a zsinórban az elején és a sor végére A grep használatával

A karat (^) és a dollár ($) szimbólum lehetővé teszi a minták keresését a sor elején és végén.

Képzeld el, hogy van egy foci nevű fájlt a következő csapatok nevével:

  • Blackpool
  • Liverpool
  • Manchester város
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC Manchester United

Ha meg akarta találni a Manchester-tel kezdődő összes csapatot, a következő szintaxist fogja használni:

grep ^ Manchester csapatok

A fenti parancs visszaküldi a Manchester Cityt és a Manchester Unitedet, de a Manchester United FC-t.

Alternatív megoldásként megtalálja az Egyesült államokkal végződő összes csapatot az alábbi szintaxissal:

grep United $ csapatok

A fenti parancs visszatér a Manchester Unitedhez és a Newcastle United-hez, de nem FC United Manchester-be.

04/09

Számok száma a mérkőzések használata grep

Ha nem szeretné visszaadni a görbékkel egyező mintát, akkor csak a következő szintaxist használhatja:

grep -c minta bemeneti fájl

Ha a mintát kétszer egymás után illesztettük, akkor a 2-es szám visszaadódik.

Olvass tovább az alábbiakban

05/09

Az összes olyan kifejezés megtalálása, amelyek nem felelnek meg a grep használatával

Képzeld el, hogy van egy listája a helyneveknek a felsorolt ​​országokkal:

  • aberdeen Skócia
  • Glasgow Skócia
  • liverpool Anglia
  • Colwyn öbölben
  • London, Anglia

Talán észrevette, hogy a Colwyn-öbölben nincs ország.

Az összes ország helyének megkereséséhez az alábbi szintaxist használhatja:

grep land $ helyek

Az eredmények visszaadása az összes hely a Colwyn-öböl kivételével.

Ez nyilvánvalóan csak olyan helyekre működik, amelyek a szárazföldön végződnek (alig tudományos).

A kijelölést a következő szintaxissal lehet invertálni:

grep -v föld $ helyek

Ez megtalálja az összes olyan helyet, amely nem ér véget a földdel.

06/09

Hogyan találja meg az üres sorokat a fájlokban A grep használata

Képzeld el, hogy van egy bemeneti fájlja, amelyet egy harmadik féltől származó alkalmazás használ, amely leállítja a fájl olvasását, amikor üres sort talál, az alábbiak szerint:

  • aberdeen scotland
  • inverz scotland
  • liverpool anglia
  • colwyn bay wales

Amikor a kérelem a vonalhoz érkezik a liverpool után, akkor az abbahagyja a jelentés értelmezését.

A grep segítségével üres sorokat kereshet a következő szintaxissal:

grep ^ $ helyek

Sajnos ez nem különösebben hasznos, mert csak az üres sorokat adja vissza.

Természetesen kaphat egy számot az üres sorok számáról, mint csekk, hogy ellenőrizze, hogy a fájl az alábbiak szerint érvényes-e:

grep -c ^ $ helyek

Ugyanakkor hasznos lenne megismerni azokat a sorszámokat, amelyek üres sorral rendelkeznek, így kicserélheti azokat. Ezt a következő paranccsal teheti meg:

grep -n ^ $ helyek

Olvass tovább az alábbiakban

07, 09

Hogyan keressünk nagybetűs vagy kisbetűket tartalmazó karakterláncokat a grep használatával

A grep használatával megállapíthatja, hogy a fájl melyik sorai tartalmaznak nagy betűket a következő szintaxissal:

grep 'A-Z' fájlnév

A szögletes zárójelek segítségével meghatározhatja a karakterek tartományát. A fenti példában megegyezik az A és Z közötti karakterekkel.

Ezért a kisbetűs karakterek illesztéséhez használhatja a következő szintaxist:

grep 'a-z' fájlnév

Ha csak betűkkel, és nem számjegyekkel vagy más szimbólumokkal szeretne megfeleltetni, a következő szintaxist használhatja:

grep 'a-zA-Z' fájlnév

Ugyanazt teheti meg a következő számokkal:

grep '0-9' fájlnév 08, 09

Újratöltő minták keresése a grep használatával

Az ismétlődő minta kereséséhez használhatja a gömbölyű zárójeleket {}.

Képzeld el, hogy van egy telefonszáma a következőképpen:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Tudja, hogy a szám első részének három számjegynek kell lennie, és azon vonalakat szeretné megtalálni, amelyek nem felelnek meg ennek a mintának.

Az előző példából tudjuk, hogy 0-9 a fájl összes számát visszaadja.

Ebben az esetben azt szeretnénk, ha a sorok három számmal kezdődnek, majd egy kötőjel (-). Ezt a következő szintaxissal teheti meg:

grep "^ 0-9 0-9 0-9 -" számok

Amint azt a korábbi példákból tudjuk, a karát (^) azt jelenti, hogy a vonalnak a következő mintával kell kezdődnie.

A 0-9 minden számot keres 0 és 9 között. Mivel háromszor szerepel, három számmal egyezik meg. Végül van egy kötőjel, amely azt jelöli, hogy egy kötőjelnek sikerülnie kell a három számnak.

A göndör konzolok használatával a keresés kisebb lehet a következőképpen:

grep "^ 0-9 {3 } -" számokat

A slash elhagyja a {zárójelet úgy, hogy a szabályos kifejezés részeként működjön, de lényegében azt jelenti, hogy ez a 0-9 {3}, ami azt jelenti, hogy bármely szám 0 és 9 között háromszor.

A göndör konzolok a következőképpen is használhatók:

{5,10}{5,}

Az {5,10} azt jelenti, hogy a keresett karaktert legalább ötször meg kell ismételni, de legfeljebb 10, míg az {5,} azt jelenti, hogy a karaktert legalább ötször meg kell ismételni, de ez több lehet.

Olvass tovább az alábbiakban

09. 09. sz

Az egyéb parancsokból származó kimenet használata A grep használata

Eddig a minták illesztését néztük az egyes fájlok között, de a grep más parancsokból származó kimenetet is használhat a mintázat illesztésének bemeneteként.

Nagyszerű példa erre a ps parancsra, amely felsorolja az aktív folyamatokat.

Például futtassa a következő parancsot:

ps -ef

A rendszeren minden futó folyamat megjelenik.

A grep segítségével egy adott futási folyamatot kereshet az alábbiak szerint:

ps -ef | grep firefox

összefoglalás

A grep parancs egy alapvető Linux parancs, és ez az, amelyik megéri megtanulni, mert sokkal könnyebbé teszi életedet, amikor fájlokat és folyamatokat keres a terminál használatakor.