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?
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.
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
- 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
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:
- 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.
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á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:
- aberdeen scotland
- glasgow scotland
- 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 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:
- 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
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:
- 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.
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