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

Bevezetés

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 néhány példát mutatok be, amelyek segítenek megérteni a grep parancsot.

01/09

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

A Linux grep parancs.

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

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:

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

Vegye figyelembe, hogy 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

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:

Aberdeen

Aberystwyth

Aberlour

Inverurie

Inverness

Newburgh

új szarvas

új galloway

Glasgow

Edinburgh

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 inverz vagy egy hely, amelyet inverness-nak neveznek, akkor mindkettő visszakerül.

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

Az összes on.com kereséshez csak a következő szintaxis alapján kereshet:

grep * about * domainnevek

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

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.

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:

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álhatja az Egyesült államokkal végződő összes csapatot a következő szintaxissal:

grep United $ csapatok

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

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.

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:

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 az alábbi 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:

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

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 '[AZ]' 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 '[az]' 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:

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.

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.