Grep-komennon käyttäminen Linuxissa [12 hyödyllistä esimerkkiä]


Oletko koskaan joutunut etsimään tiedostosta tiettyä merkkijonoa tai kuviota, mutta et tiedä mistä aloittaa etsiminen? No, tässä on grep-komento apuun!

grep on tehokas tiedostomallihaku, joka on varustettu jokaisessa Linuxin jakelussa. Jos sitä ei jostain syystä ole asennettu järjestelmääsi, voit asentaa sen helposti paketinhallinnan kautta kuvan osoittamalla tavalla.

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]    

Olen huomannut, että helpoin tapa saada jalat kastumaan grep-komennolla on sukeltaa suoraan sisään ja käyttää joitain tosielämän esimerkkejä.

1. Etsi ja etsi tiedostoja Linuxissa

Oletetaan, että olet juuri asentanut koneellesi uuden Ubuntun uuden kopion ja että aiot kokeilla Pythonin komentosarjaa.

Olet selaillut verkkoa etsimässä opetusohjelmia, mutta huomaat, että Pythonista on käytössä kaksi eri versiota, etkä tiedä, minkä Python-version asennusohjelma on asentanut Ubuntuun, tai jos se on asentanut moduuleja.

Suorita vain seuraava dpkg-komento komennolla grep kuvan mukaisesti:

dpkg -l | grep -i python

Ensin suoritimme dpkg –l, joka luettelee järjestelmääsi asennetut *.deb-paketit. Toiseksi, lähdössä on grep -i python, joka sanoo yksinkertaisesti "siirry grepiin ja suodata pois ja palauta kaikki, jossa on python". ”

Vaihtoehto -i on tarkoitettu kirjainkoon huomiotta jättämiseen, koska grep on isojen ja pienten kirjainten välinen ero. -i-vaihtoehdon käyttäminen on hyvä tapa päästä mukaan, ellet tietenkään yritä naulata tarkempaa hakua.

2. Etsi ja suodata tiedostoja Linuxissa

grep-komentoa voidaan käyttää myös yksittäisten tiedostojen tai useiden tiedostojen etsimiseen ja suodattamiseen. Otetaan tämä skenaario:

Sinulla on ongelmia Apache-verkkopalvelimesi kanssa, ja olet ottanut yhteyttä johonkin verkon monista mahtavista foorumeista ja pyytänyt apua.

Ystävällinen sielu, joka vastaa sinulle, on pyytänyt sinua lähettämään /etc/apache2/apache2.conf-tiedostosi sisällön. Eikö sinulle, sinua auttavalle kaverille ja kaikille sitä lukeville olisi helpompaa, jos voisit poistaa kaikki kommentoidut rivit? No, voit! Suorita vain tämä:

grep -v ^\# /etc/apache2/apache2.conf | grep .

Valinta -v käskee grepin kääntämään tulosteensa, mikä tarkoittaa, että vastaavien rivien tulostamisen sijaan toimi päinvastoin ja tulosta kaikki rivit, jotka eivät vastaa lauseketta. tässä tapauksessa #-kommentoidut rivit.

Huomaa, että käytimme myös grep . -koodia lopussa piilottaaksemme kaikkien tyhjien rivien tulosteen. Näin näemme vain konfigurointiasetukset päätteessämme.

3. Etsi kaikki .mp3-tiedostot Linuxista

grep voi olla erittäin hyödyllinen suodatuksessa stdoutista. Oletetaan esimerkiksi, että sinulla on kokonainen kansio täynnä musiikkitiedostoja useissa eri muodoissa.

Haluat löytää kaikki *.mp3-tiedostot artistilta JayZ, mutta et halua uudelleenmiksattuja kappaleita. Käyttämällä etsi-komentoa parilla grep-piippulla voit tehdä tempun:

find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”

Tässä esimerkissä käytämme find-komentoa tulostaaksemme kaikki tiedostot, joiden tunniste on *.mp3 ja suodattaaksesi sen putkilla grep –i. ulos ja tulosta kaikki tiedostot, joiden nimi on "JayZ" ja sitten toinen putkeen grep –vi, joka suodattaa pois eikä tulosta kaikkia tiedostonimiä merkkijonolla (joka tapauksessa) "remix".

4. Näytä rivien lukumäärä ennen tai jälkeen hakumerkkijonon

Muita vaihtoehtoja ovat kytkimet -A ja -B, jotka näyttävät vastaavan rivin ja joukon rivejä, jotka ovat joko ennen tai jälkeen hakumerkkijonon.

Man-sivulla on tarkempi selitys, mutta mielestäni on helpointa muistaa vaihtoehdot -A=jälkeen ja -B=ennen:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP

5. Tulostaa rivien lukumäärän ottelun ympärille

Grepin -C-vaihtoehto on samanlainen, mutta sen sijaan, että se tulostaa rivit, jotka tulevat joko ennen tai jälkeen merkkijonon, se tulostaa rivit kumpaankin suuntaan:

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. Laske otteluiden määrä

Samalla tavalla kuin grep-merkkijonon liittäminen sanamäärään (wc-komento), grepin sisäänrakennettu vaihtoehto voi suorittaa saman sinulle:

ifconfig | grep -c inet6

7. Etsi tiedostoja tietyn merkkijonon mukaan Linuxissa

–n-vaihtoehto grep:lle on erittäin hyödyllinen tiedostojen virheenkorjauksessa käännösvirheiden aikana. Se näyttää rivinumeron tietyn hakumerkkijonon tiedostossa:

grep -n "main" setup.py

8. Etsi merkkijono rekursiivisesti kaikista hakemistoista

Jos haluat etsiä merkkijonoa nykyisestä hakemistosta ja kaikista alihakemistoista, voit määrittää –r-vaihtoehdon rekursiivista hakua varten:

grep -r “function” *

9. Etsi koko kuvio

-w-vaihtoehdon välittäminen grepille etsii koko merkkijonossa olevaa kuviota. Esimerkiksi käyttämällä:

ifconfig | grep -w "RUNNING"

Tulostaa kuvion sisältävän rivin lainausmerkeissä. Toisaalta, jos yrität:

ifconfig | grep -w "RUN"

Mitään ei palauteta, koska emme etsi mallia, vaan kokonaista sanaa.

10. Hae merkkijonoa Gzipped-tiedostoista

Maininnan ansaitsevat grepin johdannaiset. Ensimmäinen on zgrep, joka, kuten zcat, on tarkoitettu käytettäväksi gzip-tiedostoissa. Se käyttää samat asetukset kuin grep ja sitä käytetään samalla tavalla:

zgrep -i error /var/log/syslog.2.gz

11. Yhdistä säännölliset lausekkeet tiedostoissa

Egrep-komento on toinen johdannainen, joka tarkoittaa "Extended Global Regular Expression ". Se tunnistaa ylimääräiset lausekkeen metamerkit, kuten at + ? | ja ().

egrep-komento on erittäin hyödyllinen lähdetiedostojen ja muiden koodinpätkien etsimiseen, jos tarvetta ilmenee. Se voidaan kutsua tavallisesta grepistä määrittämällä -E-vaihtoehto.

grep -E

12. Hae kiinteää kuviomerkkijonoa

Fgrep-komento etsii tiedostosta tai tiedostoluettelosta kiinteää kuviomerkkijonoa. Se on sama kuin grep -F. Yleinen tapa käyttää fgrepä on välittää sille mallitiedosto:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Tämä on vain grepin aloituskohta, mutta kuten luultavasti huomaat, se on korvaamaton moniin tarkoituksiin. Toteuttamiemme yksinkertaisten yksirivisten komentojen lisäksi grep:llä voidaan kirjoittaa tehokkaita cron-töitä ja vankkoja shell-skriptejä. alkaa.

Ole luova, kokeile man-sivun vaihtoehtoja ja keksi grep-lausekkeet, jotka palvelevat omia tarkoituksiasi!