Weboldal keresés

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!