Ebben a cikkben megmutatjuk, hogy futtasson előre sztring keresést a Grep használatával reguláris kifejezéssel, 10 gyakorlati példával megadva a megvalósításait. Az ebben a cikkben tárgyalt számos példának gyakorlati következményei vannak, vagyis felhasználhatja őket a napi Linux programozás során. Az alábbi minták néhány regexp példát írnak le a gyakran keresett mintákra.
1. példa: Keressen egyetlen bérlőt egy szövegfájlban
Írja be a következőket:
$ grep '\ $' könyv2. példa: Keressen egyetlen karakterláncot egy szövegfájlban
A „könyv” fájl sorainak kimenetéhez, amely tartalmazza a „$ 14” karakterláncot.99 ”, típus:
$ grep '\ $ 14 \.99 'könyv3. példa: Keressen egyetlen speciális bérlőt egy szövegfájlban
Írja be a következőket:
$ grep '\\' könyv4. példa: Vonalak egyezése bizonyos szöveggel kezdődően
Használja a 'ˆ'-t egy regexp-ben a sor elejének jelölésére.
Az összes / "usr / dict / words" "pro" betűvel kezdődő sor kiadásához írja be a következőt:
$ grep 'ˆpro' / usr / dict / wordsA „könyv” fájl összes olyan sorának kimenetéhez, amely az „elején” szöveggel kezdődik, esetektől függetlenül írja be:
$ grep -i 'az elején' könyvbenJEGYZET: Ezeket a kifejezéseket 'karakterekkel idézzük; ez azért van, mert egyes héjak egyébként a „ˆ” karaktert speciális „metakarakterként” kezelik
A szó- és kifejezéskeresések mellett a grep segítségével komplex szövegmintákat kereshet, amelyeket reguláris kifejezéseknek nevezünk. A reguláris kifejezés vagy a „regexp” egy speciális karaktereket tartalmazó karakterlánc, amely megadja a készlet megfelelő mintákat.
Technikailag szólva a szó- vagy kifejezésminták reguláris kifejezések, csak nagyon egyszerűek. Rendszeres kifejezésben a legtöbb karakter - beleértve a betűket és számokat is - önmagát képviseli. Például a regexp minta 1 egyezik az '1' karakterlánccal és a mintával fiú megfelel a "fiú" húrnak.
Számos lefoglalt karakter, metakarakter, úgynevezett karakter, amely nem képviseli önmagát egy reguláris kifejezésben, de van egy speciális jelentése, amelyet összetett minták felépítésére használnak. Ezek a metakarakterek a következők: ., *, [, ], ˆ, $ és \. Jó megjegyezni, hogy az ilyen metakarakterek szinte az összes elterjedt és speciális Linux disztribúció között elterjedtek. Itt van egy jó cikk, amely a metakarakterek speciális jelentéseivel foglalkozik, és példákat ad azok használatára.
5. példa: A szövegek befejezése bizonyos szövegekkel
Használja a '$' karaktert az idézett szöveg utolsó karaktereként, hogy csak a sor végén illeszkedjen a szöveghez. A felkiáltójellel végződő "megy" fájl sorainak kimenetéhez írja be:
$ grep '!$ 'megy6. példa: Bizonyos hosszúságú vonalak illesztése
Egy adott hosszúságú vonalak egyezéséhez használja ezt a '.'karakterek' and 'és' $ 'között - például, ha az összes két karakter (vagy oszlop) szélességű sort meg akarja egyezni, használja a' ˆ… $ 'kifejezést a kereséshez.
Az összes, pontosan három karakter szélességű "/ usr / dict / words" sor kimenetéhez írja be:
$ grep 'ˆ… $' / usr / dict / wordsHosszabb soroknál hasznosabb egy másik konstrukció használata: 'ˆ.\ szám \ $ ', ahol a szám az egyezni kívánt sorok száma. Használja a ',' számtartomány megadását.
Az összes, pontosan tizenkét karakter szélességű "/ usr / dict / words" sor kimenetéhez írja be:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsAz '/ usr / dict / words' összes olyan sorának kimenetéhez, amely huszonkét vagy több karakter széles, írja be:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / words7. példa: Megfelelő vonalak, amelyek tartalmaznak néhány regexps-t
A számos regexps bármelyikét tartalmazó sorok egyezéséhez adja meg az egyes regexps-eket, hogy keressen a váltakozó operátorok között ('\ |'), mint regexet a keresésre. Az adott regexps bármelyikét tartalmazó sorok kimenetre kerülnek.
A „playboy” összes sorának kiadásához, amely tartalmazza a „könyv” vagy a „torta” mintákat, írja be:
$ grep 'a könyv \ | torta' playboy8. példa: Összehasonlító vonalak, amelyek tartalmazzák az összes regexps-t
Megfelelő vonalak kimenetére minden számos regexps közül a grep segítségével adja meg azokat a sorokat, amelyek tartalmazzák az első egyeztetni kívánt regexet, és csatolja a kimenetet egy grep-hez, a második regexp-kel argumentumként. Folytassa a csövek hozzáadását az összes keresni kívánt regexps kereséséhez.
A „lejátszási lista” összes sorának kimenetéhez, amely a „part” és az „ég” mintákat is tartalmazza, esetektől függetlenül írja be:
$ grep -i 'a parton' lejátszási lista | grep-ég9. példa: Egyező vonalak, amelyek csak bizonyos karaktereket tartalmaznak
A csak bizonyos karaktereket tartalmazó sorok egyezéséhez használja a 'ˆ [characters] * $' regexp szót, ahol a karakterek illenek össze. Ha csak 'magánhangzókat tartalmazó' / usr / dict / words 'sorokat szeretne kimenni, írja be a következőt:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsAz '-i' opció megkülönbözteti a karaktereket, kis- és nagybetűktől függetlenül; tehát ebben a példában az összes magánhangzó karakter egyezik, esetektől függetlenül.
Péld 10: Mondatok keresése a távolságtól függetlenül
Az egyik módja annak, hogy olyan kifejezést keressen, amely a szóközök között, vagy a sorok vagy az oldalszakaszok között extra szóközökkel fordulhat elő, az, hogy eltávolítja az összes sortáblát és extra szóközt a bemenetből, majd megragadja azt. Ehhez csatolja a bemenetet tr-be, argumentumként a "\ r \ n: \> \ | -" argumentummal a '-d' opcióra (az összes sortörés eltávolítása a bemenetből); csatolja az fmt szűrőhöz az '-u' opcióval (a szöveget egyenletes távolsággal írja ki); és cső, hogy fogd a mintát keresni.
Ha a "docs" fájlban egyidejűleg szeretne keresni a "sztring" sorban, írja be a következőt:
$ cat docs | tr -d '\ r \ n: \> \ |-"| fmt -u | grep "egyidejűleg"
Összegzés
Ebben a cikkben 10 gyakorlati példát tekintettünk át a Grep Linux parancs használatára a szöveges fájlban lévő karakterláncok keresésére és megtalálására. Útközben megtanultuk, hogyan használjunk rendszeres kifejezéseket a Greppel együtt, hogy összetett kereséseket hajtsunk végre a szöveges fájlokban. Mostanra már jobb ötlete van arról, hogy milyen hatékonyak a Linux keresési funkciók.
Íme további források azok számára, akik többet szeretnének megtudni a Linux programozásáról:
Források a rendszergazdák számára
- Linux Rendszergazda útmutató - Mi a Linux operációs rendszer és hogyan működik
- Linux rendszergazdai útmutató - A Linux virtuális memóriájának és a lemezpuffer gyorsítótárának áttekintése
- Linux rendszergazdai útmutató - legjobb gyakorlatok a Linux rendszerek megfigyeléséhez
- Linux rendszergazdai útmutató - legjobb gyakorlatok a Linux rendszerbetöltéseinek és leállításainak végrehajtásához
- Linux rendszergazdai útmutató - Biztonsági mentési műveletek készítésének és kezelésének legjobb gyakorlata
Források Linux kernel programozók számára
- Hogyan működik a Linux operációs rendszer memóriakezelése
- A Linux kernel operációs rendszer folyamatainak átfogó áttekintése
- Milyen mechanizmusok állnak a Linux Kernel feladatkezelés mögött
Linux fájlrendszeri szótár
Átfogó áttekintés a Linux fájl- és címtárrendszer működéséről