Hvordan bruke Grep Command i Linux [12 nyttige eksempler]


Har du noen gang blitt konfrontert med oppgaven med å lete etter en bestemt streng eller et bestemt mønster i en fil, men har ingen anelse om hvor du skal begynne å lete? Vel, her er grep-kommandoen til unnsetning!

grep er en kraftig filmønstersøker som kommer utstyrt på hver distribusjon av Linux. Hvis det av en eller annen grunn ikke er installert på systemet ditt, kan du enkelt installere det via pakkebehandlingen som vist.

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]    

Jeg har funnet ut at den enkleste måten å få føttene våte med grep-kommandoen er å bare dykke rett inn og bruke noen eksempler fra den virkelige verden.

1. Søk og finn filer i Linux

La oss si at du nettopp har installert en ny kopi av den nye Ubuntu på maskinen din, og at du kommer til å prøve Python-skripting.

Du har søkt på nettet på jakt etter opplæringsprogrammer, men du ser at det er to forskjellige versjoner av Python i bruk, og du vet ikke hvilken versjon av Python som er installert på Ubuntu av installasjonsprogrammet, eller hvis den installerte noen moduler.

Bare kjør følgende dpkg-kommando med grep som vist:

dpkg -l | grep -i python

Først kjørte vi dpkg –l, som viser installerte *.deb-pakker på systemet ditt. For det andre sendte vi den utgangen til grep -i python, som ganske enkelt sier "gå til grep og filtrer ut og returner alt med 'python' i den. ”

Alternativet -i er der for å ignorere store og små bokstaver, siden grep skiller mellom store og små bokstaver. Å bruke -i-alternativet er en god vane med mindre du selvfølgelig prøver å finne et mer spesifikt søk.

2. Søk og filtrer filer i Linux

grep kan også brukes til å søke og filtrere i individuelle filer eller flere filer. La oss ta dette scenariet:

Du har noen problemer med Apache Web Server, og du har kontaktet et av de mange fantastiske foraene på nettet og spurt om hjelp.

Den snille sjelen som svarer deg har bedt deg legge ut innholdet i /etc/apache2/apache2.conf-filen din. Ville det ikke vært lettere for deg, fyren som hjelper deg og alle som leser det hvis du kunne fjerne alle de kommenterte linjene? Vel, du kan! Bare kjør dette:

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

Alternativet -v ber grep om å invertere utdata, noe som betyr at i stedet for å skrive ut samsvarende linjer, gjør du det motsatte og skriver ut alle linjene som ikke samsvarer med uttrykket, i dette tilfellet, # kommenterte linjene.

Merk at vi også brukte grep . på slutten for å skjule utdata fra alle tomme linjer. På denne måten ser vi kun konfigurasjonsinnstillingene i terminalen vår.

3. Finn alle .mp3-filer i Linux

grep kan være svært nyttig for filtrering fra stdout. La oss for eksempel si at du har en hel mappe full av musikkfiler i en haug med forskjellige formater.

Du vil finne alle *.mp3-filene fra artisten JayZ, men du vil ikke ha noen av de remiksede sporene. Å bruke en finn-kommando med et par grep-rør vil gjøre susen:

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

I dette eksemplet bruker vi find til å skrive ut alle filene med *.mp3-utvidelsen, og overfører den til grep –i for å filtrere ut og skriv ut alle filer med navnet «JayZ » og deretter en annen pipe til grep –vi som filtrerer ut og ikke skriver ut alle filnavn med strengen (i alle fall) «remiks ».

4. Vis antall linjer før eller etter søkestrengen

Et annet par alternativer er bryterne -A og -B, som viser den samsvarende linjen og et antall linjer enten som kommer før eller etter søkestrengen.

Mens man-siden gir en mer detaljert forklaring, synes jeg det er lettest å huske alternativene som -A=etter, og -B=før:

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

5. Skriver ut antall linjer rundt samsvar

greps -C-alternativ er likt, men i stedet for å skrive ut linjene som kommer enten før eller etter strengen, skriver den ut linjene i begge retninger:

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. Tell antall treff

I likhet med å overføre en grep-streng til ordtelling (wc-kommando), kan greps innebygde alternativ utføre det samme for deg:

ifconfig | grep -c inet6

7. Søk etter filer etter gitt streng i Linux

Alternativet –n for grep er veldig nyttig når du feilsøker filer under kompileringsfeil. Den viser linjenummeret i filen til den gitte søkestrengen:

grep -n "main" setup.py

8. Søk etter en streng rekursivt i alle kataloger

Hvis du ønsker å søke etter en streng i gjeldende katalog sammen med alle underkatalogene, kan du spesifisere alternativet –r for å søke rekursivt:

grep -r “function” *

9. Søk etter hele mønsteret

Ved å sende -w alternativet til grep søker etter hele mønsteret som er i strengen. For eksempel ved å bruke:

ifconfig | grep -w "RUNNING"

Vil skrive ut linjen som inneholder mønsteret i anførselstegn. På den annen side, hvis du prøver:

ifconfig | grep -w "RUN"

Ingenting vil bli returnert siden vi ikke søker etter et mønster, men et helt ord.

10. Søk etter en streng i Gzipped Files

Fortjener noen omtale er greps derivater. Den første er zgrep, som, i likhet med zcat, er til bruk på gzippede filer. Det tar de samme alternativene som grep og brukes på samme måte:

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

11. Match regulære uttrykk i filer

egrep-kommandoen er en annen derivativ som står for «Utvidet globalt regulært uttrykk ». Den gjenkjenner ytterligere uttrykksmetategn som at + ? | og ().

egrep-kommandoen er veldig nyttig for å søke i kildefiler og andre deler av kode, hvis behovet skulle oppstå. Den kan påkalles fra vanlig grep ved å spesifisere alternativet -E.

grep -E

12. Søk etter en streng med fast mønster

Kommandoen fgrep søker i en fil eller liste over filer etter en fast mønsterstreng. Det er det samme som grep -F. En vanlig måte å bruke fgrep på er å sende en fil med mønstre til den:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Dette er bare et utgangspunkt med grep, men som du sikkert kan se, er det uvurderlig for en rekke formål. Bortsett fra de enkle enlinjekommandoene vi har implementert, kan grep brukes til å skrive kraftige cron-jobber og robuste shell-skript for en start.

Vær kreativ, eksperimenter med alternativene på man-siden, og kom opp med grep-uttrykk som tjener dine egne formål!