Words at War: The Veteran Comes Back / One Man Air Force / Journey Through Chaos
Tartalomjegyzék:
- Grep parancs szintaxisa
- A
grep
használata a karakterlánc kereséséhez a fájlokban - Fordított mérkőzés (kizárás)
- Hogyan használható a Grep a parancskimenet karakterláncának keresésére?
- Rekurzív keresés
- Csak a fájlnév megjelenítése
- Az eset érzékeny keresése
- Teljes szavak keresése
- Mutasd a sorszámokat
- Gróf mérkőzések
- Több húr keresése (minták)
- Csendes mód
- Alapvető szabályos kifejezés
- Bővített szabályos kifejezések
- Vonalak nyomtatása mérkőzés előtt
- Nyomtasson sorokat egy mérkőzés után
- Következtetés
A
grep
parancs, amely a „globális reguláris kifejezés nyomtatását” jelenti, az egyik legerősebb és leggyakrabban használt parancs Linuxban.
Grep egy vagy több bemeneti fájlt keres egy sornak megfelelő soroknál, és minden illesztési sort a normál kimenetre ír. Ha nem ad meg fájlokat, akkor a
grep
a normál bemenetről olvas, amely általában egy másik parancs kimenete.
Ebben az oktatóanyagban megmutatjuk, hogyan kell használni a
grep
parancsot gyakorlati példák segítségével, és részletes magyarázatokat adunk a leggyakoribb GNU
grep
opciókról.
Grep parancs szintaxisa
Mielőtt megtudnánk, hogyan kell használni a
grep
parancsot, kezdjük meg az alapszintaxis áttekintésével.
A
grep
segédprogram kifejezései a következők:
grep PATTERN
A szögletes zárójelben lévő tételek választhatók.
-
OPTIONS
- Nulla vagy több lehetőség. A Grep számos lehetőséget kínál a viselkedésének ellenőrzésére.PATTERN
- keresési minta.FILE
- nulla vagy több bemeneti fájlnév.
A fájlban való kereséshez a parancsot futtató felhasználónak olvasási hozzáféréssel kell rendelkeznie a fájlhoz.
A
grep
használata a karakterlánc kereséséhez a fájlokban
A
grep
parancs legegyszerűbb használata egy karakterlánc (szöveg) keresésére a fájlban.
Például, a
bash
karakterláncot tartalmazó
/etc/passwd
fájl sorainak megjelenítéséhez használhatja a következő parancsot:
grep bash /etc/passwd
A kimenetnek így kell kinéznie:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Ha a karakterlánc szóközöket tartalmaz, akkor azokat egy vagy két idézőjelbe kell beilleszteni:
grep "Gnome Display Manager" /etc/passwd
Fordított mérkőzés (kizárás)
A mintának nem megfelelő sorok megjelenítéséhez használja a
-v
(vagy - -
--invert-match
) opciót.
Például az
/etc/passwd
fájl sorainak megjelenítéséhez, amelyek nem tartalmazzák a
nologin
karaktersort, használhatja a következő parancsot:
grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Hogyan használható a Grep a parancskimenet karakterláncának keresésére?
A bemeneti fájlok megadása helyett egy másik parancs kimenetét
grep
vezetheti, majd csak az adott mintának megfelelő sorokat jelenítheti meg.
Például a következő
ps
paranccsal megtudhatja, mely folyamatok futnak a rendszeren felhasználói
www-data
:
ps -ef | grep www-data
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Ezenkívül több csövet is láncolhat a parancson. Mint látható a fenti kimenetből, van egy sor, amely tartalmazza a
grep
folyamatot. Ha nem akarja, hogy ez a sor megjelenjen, vigye a kimenetet egy másik
grep
példányhoz, az alább látható módon.
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Rekurzív keresés
A minta rekurzív kereséséhez használja a
-r
opciót (vagy - - rekurzív). Ez megkeresi a megadott könyvtár összes fájlját, és átugorja a rekurzívan előforduló szimbólumokat. Az összes szimbolikus hivatkozás követéséhez használja az
-R
opciót (vagy - -
--dereference-recursive
).
A következő példában a
linuxize.com
karakterláncot
linuxize.com
az
/etc
könyvtár összes
linuxize.com
:
grep -r linuxize.com /etc
A parancs kinyomtatja a megfelelő sorokat, amelyeket a fájl teljes elérési útja előz meg.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Ha ehelyett
-r
használ
-R
akkor a
grep
az összes szimbolikus linket követni fogja:
grep -R linuxize.com /etc
Figyelje meg a kimenet utolsó sorát. Ezt a sort nem nyomtatja ki a fenti példa, mert az Nginx
sites-enabled
könyvtárában található fájlok a linkek a
sites-available
könyvtárában lévõ konfigurációs fájlokhoz.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;
Csak a fájlnév megjelenítése
Az alapértelmezett
grep
kimenet elnyomására és csak az egyeztetett mintát tartalmazó fájlok nevének kinyomtatására használhatja az
-l
(vagy - -
--files-with-matches
) opciót.
Például, hogy megkeresse az összes, a
.conf
fájllal végződő fájlt az aktuális munkakönyvtárban, és csak a
linuxize.com
típust tartalmazó fájlok nevét nyomtassa ki:
grep -l linuxize.com *.conf
A kimenet így néz ki:
tmux.conf haproxy.conf
Az
-l
opciót általában a
-R
rekurzív opcióval kombinálva használják:
Az eset érzékeny keresése
Alapértelmezés szerint a
grep
parancs kis- és nagybetűk között érzékeny. Ez azt jelenti, hogy a nagy- és a kisbetűket különállóként kezelik.
Ha figyelmen kívül hagyja a kis- és nagybetűket a keresés során, használja a
-i
opciót (vagy -
--ignore-case
).
Például, amikor a
Zebra
opciót keresi opció nélkül, a következő parancs nem fog megjeleníteni semmilyen kimenetet, azaz vannak egyező sorok:
grep Zebra /usr/share/words
De ha a
-i
kapcsolóval a kis- és nagybetűk között érzéketlen keresést hajt végre, akkor az megegyezik a nagy- és a kisbetűkkel:
grep -i Zebra /usr/share/words
A „Zebra” megadása megegyezik a „zebra”, „ZEbrA” vagy bármilyen más kis- és nagybetû kombinációjával az adott karakterláncon.
Teljes szavak keresése
A „gnu” keresésekor a
grep
azon sorokat is kinyomtatja, ahol a „gnu” nagyobb szavakkal van beágyazva, például „cygnus” vagy „magnum”.
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Csak azoknak a soroknak a visszatéréséhez, ahol a megadott karakterlánc egy teljes szó (nem szó karakterekkel zárva), használja a
-w
(vagy
--word-regexp
) opciót.
az
,
AZ
és
0-9
) és aláhúzást (
_
) tartalmaznak. Az összes többi karaktert nem szavaknak tekintjük.
grep -w gnu /usr/share/words
Mutasd a sorszámokat
A
-n
(vagy a
--line-number
) opcióval annak megjelenítéséhez, hogy a mintának megfelelõ karakterláncot tartalmazó sorok
--line-number
. Ennek az opciónak a használatakor a
grep
a találatokat szabványos kimenetre nyomtatja, előtaggal, annak a sorszámnak a segítségével, amelyen megtalálható volt.
Például az
/etc/services
fájl sorai megjelenítéséhez, amelyek tartalmazzák a megfelelő vonal számmal előírt
bash
karaktersorozatot, használhatja a következő parancsot:
grep -n 10000 /etc/services
Az alábbi kimenet azt mutatja, hogy az egyezések a 10423 és a 10424 soron találhatók.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Gróf mérkőzések
A megfelelő sorok számának a szabványos kimenetre történő kinyomtatásához használja a
-c
(vagy - -
--count
) opciót.
Az alábbi példában azon fiókok számát számoljuk, amelyek héja az
/usr/bin/zsh
.
grep -c '/usr/bin/zsh' /etc/passwd
Több húr keresése (minták)
Két vagy több keresési mintát lehet összekapcsolni a VAGY operátorral.
Alapértelmezés szerint a
grep
a mintát alapvető reguláris kifejezésként értelmezi, ahol a meta-karakterek, például a
|
elveszítik speciális jelentéseiket, és visszahúzott verzióikat kell használni.
Az alábbi példában a
fatal
,
error
és
critical
szavak minden előfordulását keresjük az Nginx naplófájl fájljában:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Csendes mód
A
-q
(vagy
--quiet
) azt mondja a
grep
hogy ne írjon semmit a terminálra (standard kimenet). Ha talált egyezést, akkor a parancs
0
állapotú lesz. Ez akkor hasznos, ha
grep
parancsfájlokat használ, ahol ellenőrizni szeretné, hogy egy fájl tartalmaz-e karakterláncot, és az eredménytől függően egy bizonyos műveletet végezzen.
Íme egy példa a
grep
csendes módban történő használatára tesztparancsként
if
utasításban:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Alapvető szabályos kifejezés
A GNU Grepnek két reguláris kifejezés szolgáltatáskészlete van: Basic és Extended. Alapértelmezés szerint a
grep
a mintát alapvető reguláris kifejezésként értelmezi.
Alapvető reguláris kifejezés módban történő felhasználás esetén az összes többi karakter, a metakarakterek kivételével, valójában szabályos kifejezések, amelyek megegyeznek egymással. Az alábbiakban felsoroljuk a leggyakrabban használt meta-karaktereket:
-
Használja a
^
(caret) szimbólumot, hogy egyezzen a sor elején található kifejezéssel. A következő példában a^kangaroo
karakterlánc csak akkor felel meg, ha egy sor legelején fordul elő.grep "^kangaroo" file.txt
Használja a
$
(dollár) szimbólumot a sor végén található kifejezés illesztéséhez. A következő példában akangaroo$
karakterlánc csak akkor felel meg, ha a sor végén fordul elő.grep "kangaroo$" file.txt
Használja a
.
(periódus) szimbólum, hogy megfeleljen bármely karakternek. Például, ha valamikan
felel meg, amelykan
kezdődik, akkor két karakterből áll, és aroo
karakterlánccal fejeződik be, akkor a következő mintát használhatja:grep "kan..roo" file.txt
Használat
accept
vagy „accent
”accent
, a következő mintát használhatja:grep "accet" file.txt
Használat
co(any_letter_except_l)a
tartalmú karakterláncok bármelyik kombinációjával, mint például aco(any_letter_except_l)a
,cobalt
és így tovább, de nem egyezik acola
tartalmú vonalakkal,grep "coa" file.txt
A következő karakter speciális jelentésének elkerüléséhez használja a
\
(visszajelzés) szimbólumot.
Bővített szabályos kifejezések
A minta kibővített reguláris kifejezésként való értelmezéséhez használja az
-E
(vagy - -
--extended-regexp
) beállítást. A kibővített reguláris kifejezések tartalmazzák az összes alapvető meta-karaktert, valamint további meta-karaktereket, hogy összetettebb és hatékonyabb keresési mintákat hozzanak létre. Az alábbiakban bemutatunk néhány példát:
-
Egyezzen és bontsa ki az összes e-mail címet egy adott fájlból:
grep -E -o "\b+@+\.{2, 6}\b" file.txt
Egyezzen meg és bontsa ki az összes érvényes IP-címet egy adott fájlból:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Az
-o
opció csak a megfelelő karakterlánc kinyomtatásához használható.
Vonalak nyomtatása mérkőzés előtt
--before-context
számú sor kinyomtatásához a sorok illesztése előtt használja a
-B
(vagy -
--before-context
) beállítást.
Például, ha öt vezető sor jelenik meg a sorok illesztése előtt, akkor a következő parancsot használja:
Nyomtasson sorokat egy mérkőzés után
--after-context
számú sor kinyomtatásához a sorok illesztése után használja az
-A
(vagy
--after-context
utáni) opciót.
Például, ha öt sor vonalat jelenít meg a sorok illesztése után, akkor a következő parancsot használja:
Következtetés
A
grep
parancs lehetővé teszi a minták keresését a fájlokban. Ha talál egyezést, a grep kinyomtatja a megadott mintát tartalmazó sorokat.
Sokkal többet megtudhat a Grepről a Grep Felhasználói Kézikönyv oldalon.
grep terminálSzöveg keresése a beolvasott fájlokban a visszaemlékezõ asztalon
Ez a program megy végbe, ahol más keresõprogramok nem: e-mail, PDF, beolvasott dokumentumok stb.
Szöveg keresése és cseréje több fájlban tömbökön a Windows alatt
Keresés és csere eszköz segít megtalálni és kicserélni a szöveget többször fájlokat ömlesztve. Csak írja be a szöveget és nyomja meg a Csere parancsot, hogy azonnal helyettesítse a szöveget.
Szöveg keresése és cseréje egyszerre több fájlban a FAR szoftver használatával
Ha egyszerre több fájlban kell keresni és kicserélni a szöveget egyszer a Windows számítógépen használja a FAR vagy a Find and Replace szoftvert. Biztonsági mentést készít automatikusan!