A Grep parancs használata Linuxban [12 hasznos példa]
Szembesült már azzal a feladattal, hogy egy adott karakterláncot vagy mintát keressen egy fájlban, de fogalma sincs, hol kezdje el a keresést? Nos, akkor itt a grep parancs a megmentésre!
A grep egy hatékony fájlminta-kereső, amely a Linux minden disztribúcióján megtalálható. Ha bármilyen okból nincs telepítve a rendszerére, egyszerűen telepítheti a csomagkezelőn keresztül, az ábrán látható módon.
sudo apt install grep [On Debian, Ubuntu and Mint]
sudo yum install grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
sudo emerge -a sys-apps/grep [On Gentoo Linux]
sudo apk add grep [On Alpine Linux]
sudo pacman -S grep [On Arch Linux]
sudo zypper install grep [On OpenSUSE]
Azt tapasztaltam, hogy a legegyszerűbb módja annak, hogy a grep paranccsal megnedvesítse a lábát, ha belemerül, és néhány valós példát használ.
1. Fájlok keresése és keresése Linux alatt
Tegyük fel, hogy nemrég telepítette az új Ubuntu egy friss példányát a gépére, és megpróbálja a Python szkriptet.
Az interneten böngészve oktatóanyagokat keresett, de azt látja, hogy a Python két különböző verziója van használatban, és nem tudja, hogy a Python melyik verzióját telepítette az Ubuntu telepítője, vagy ha telepített bármilyen modult.
Egyszerűen futtassa a következő dpkg parancsot a grep paranccsal a képen látható módon:
dpkg -l | grep -i python
Először a dpkg –l
programot futtattuk, amely felsorolja a rendszerére telepített *.deb
csomagokat. Másodszor, ezt a kimenetet a grep -i python
-ba továbbítottuk, amely egyszerűen azt írja ki, hogy „menjen a grep-re, szűrje ki, és adjon vissza mindent, amelyben a „python” szerepel. ”
A -i
opció a kis- és nagybetűk figyelmen kívül hagyására szolgál, mivel a grep megkülönbözteti a kis- és nagybetűket. A -i
kapcsoló használata jó szokás, ha természetesen nem egy konkrétabb keresést akarsz leszögezni.
2. Fájlok keresése és szűrése Linux alatt
A grep segítségével egyéni vagy több fájlban is kereshet és szűrhet. Vegyük ezt a forgatókönyvet:
Problémái vannak az Apache webszerverrel, és segítséget kért a neten található számos fantasztikus fórum egyikéhez.
A kedves lélek, aki válaszol Önnek, arra kérte, tegye közzé az /etc/apache2/apache2.conf fájl tartalmát. Nem lenne egyszerűbb neked, a neked segítő srácnak és mindenkinek, aki olvassa, ha eltávolíthatnád az összes kommentált sort? Nos, lehet! Csak futtasd ezt:
grep -v ^\# /etc/apache2/apache2.conf | grep .
A -v
opció arra utasítja a grep-et, hogy fordítsa meg a kimenetét, ami azt jelenti, hogy a megfelelő sorok nyomtatása helyett tegye az ellenkezőjét, és nyomtassa ki az összes olyan sort, amely nem egyezik a kifejezéssel, ebben az esetben a #
megjegyzéssel ellátott sorok.
Ne feledje, hogy a végén a grep.
parancsot is használtuk, hogy elrejtsük az összes üres sor kimenetét. Így csak a konfigurációs beállításokat látjuk a terminálunkban.
3. Keresse meg az összes .mp3 fájlt Linuxon
A grep nagyon hasznos lehet az stdout-ból való szűréshez. Tegyük fel például, hogy van egy egész mappája, tele zenei fájlokkal, különféle formátumokban.
Meg szeretnéd találni az összes *.mp3
fájlt a JayZ előadótól, de nem szeretnéd az újrakevert számokat. A find parancs használata néhány grep csővel megteszi a következő trükköt:
find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”
Ebben a példában a find segítségével kinyomtatjuk az összes *.mp3
kiterjesztésű fájlt, és a szűréshez a grep –i
fájlt továbbítjuk. ki és nyomtassa ki az összes „JayZ” nevű fájlt, majd egy másik pipát a grep –vi
-ba, amely kiszűri és nem nyomtatja ki az összes fájlnevet a karakterlánccal (semmi esetre sem) „remix”.
4. Jelenítse meg a keresési karakterlánc előtti vagy utáni sorok számát
További néhány lehetőség a -A
és a -B
kapcsolók, amelyek megjelenítik az egyező sort és a keresési karakterlánc előtti vagy utáni sorokat.
Míg a kézikönyvoldal részletesebb magyarázatot ad, szerintem a legkönnyebb megjegyezni a következő opciókat: -A
=after és -B
=előtt:
ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP
5. Sorok számát nyomtatja az egyezés körül
A grep -C
opciója hasonló, de ahelyett, hogy a karakterlánc előtti vagy utáni sorokat nyomtatná ki, bármelyik irányba kinyomtatja a sorokat:
ifconfig | grep -C 2 lo
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 15314 bytes 1593769 (1.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
6. Számolja meg a mérkőzések számát
Hasonlóan a grep karakterlánc szószámláláshoz (wc parancs) történő átvezetéséhez, a grep beépített opciója ugyanezt hajthatja végre:
ifconfig | grep -c inet6
7. Keresés a fájlok között megadott karakterlánc alapján Linux alatt
A –n
opció a grep esetén nagyon hasznos, ha fordítási hibák során keresi a fájlokat. Megjeleníti a sorszámot az adott keresési karakterlánc fájljában:
grep -n "main" setup.py
8. Rekurzív keresés egy karakterláncban az összes könyvtárban
Ha egy karakterláncot szeretne keresni az aktuális könyvtárban az összes alkönyvtárral együtt, megadhatja a –r
kapcsolót a rekurzív kereséshez:
grep -r “function” *
9. Keresse meg a teljes mintát
A -w
kapcsoló átadásával a grep a karakterláncban található teljes mintára keres. Például a következők használatával:
ifconfig | grep -w "RUNNING"
Kinyomtatja a mintát idézőjelben tartalmazó sort. Másrészt, ha megpróbálod:
ifconfig | grep -w "RUN"
Semmit nem adunk vissza, mivel nem egy mintát keresünk, hanem egy teljes szót.
10. Keressen egy karakterláncot a Gzip fájlokban
Említést érdemelnek a grep származékai. Az első a zgrep, amely a zcat-hez hasonlóan gzip fájlokhoz használható. Ugyanazokat a beállításokat használja, mint a grep, és ugyanúgy használatos:
zgrep -i error /var/log/syslog.2.gz
11. Reguláris kifejezések egyeztetése a fájlokban
Az egrep parancs egy másik származéka, amely a „Extended Global Regular Expression” rövidítése. Felismeri a további kifejezési metakaraktereket, például a at +? |
és ()
.
Az egrep parancs nagyon hasznos a forrásfájlok és más kódrészletek kereséséhez, ha szükséges. Meghívható normál grepből a -E
opció megadásával.
grep -E
12. Keressen egy rögzített minta karakterláncot
Az fgrep parancs egy fájlban vagy fájllistában keres egy rögzített minta karakterláncot. Ez ugyanaz, mint a grep -F
. Az fgrep használatának általános módja az, hogy egy mintát tartalmazó fájlt adunk át neki:
fgrep –f file_full_of_patterns.txt file_to_search.txt
Ez csak egy kiindulópont a grep használatához, de amint valószínűleg láthatja, felbecsülhetetlen értékű számos célra. Az általunk megvalósított egyszerű egysoros parancsokon kívül a grep segítségével hatékony cron feladatokat és robusztus shell szkripteket írhatunk. Rajt.
Legyen kreatív, kísérletezzen a man oldal lehetőségeivel, és találjon ki olyan grep kifejezéseket, amelyek a saját céljait szolgálják!