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/09Hogyan 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önyvekA 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" -raA -i kapcsolót az alábbiak szerint is használhatja:
Olvass tovább az alábbiakban
02/09Keresé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 gallowayGlasgowEdinburghHa meg szeretné találni a neveket tartalmazó inverz helyeket, használja a következő szintaxist:
grep inver * helyekenA 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 helyekenA 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 * domainnevekA 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 domainnevekEz rendben működne, hacsak nem volt olyan domain, amelynek neve a következő:
aboutycom.comAhhoz, hogy valóban megkeressük a .com kifejezést, a következőképpen kell elmenekülnünk a ponttól:
grep * about .com domainnamesA végső helyettesítő karakter, amely megmutatja Önt, egy olyan kérdőjel, amely nulla vagy egy karaktert jelent.
Például:
grep? ber helynevekA fenti parancs visszatér aberdeen, aberystwyth vagy akár berwick.
Olvass tovább az alábbiakban
03/09Keresé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 csapatokA 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 $ csapatokA fenti parancs visszatér a Manchester Unitedhez és a Newcastle United-hez, de nem FC United Manchester-be.
04/09Szá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ájlHa 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/09Az ö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 $ helyekAz 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 $ helyekEz megtalálja az összes olyan helyet, amely nem ér véget a földdel.
06/09Hogyan 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 ^ $ helyekSajnos 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 ^ $ helyekUgyanakkor hasznos lenne megismerni azokat a sorszámokat, amelyek üres sorral rendelkeznek, így kicserélheti azokat. Ezt a következő paranccsal teheti meg:
grep -n ^ $ helyekOlvass tovább az alábbiakban
07, 09Hogyan 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évA 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évHa 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évUgyanazt 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ámokAmint 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ámokatA 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. szAz 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 -efA 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.