![Slik kan du bruke den hemmelige fonten i WhatsApp Chat](/f/fce65cd466112e8a9cb3397308ca2fd5.jpg?width=100&height=100)
Har du noen gang blitt konfrontert med oppgaven med å lete etter en bestemt streng eller et mønster i en fil, men har ingen anelse om hvor du skal begynne å lete? Vel, da er det her grep til redning!
grep er en kraftig filmønster -søker som er utstyrt med alle distribusjoner av Linux. Hvis det av en eller annen grunn ikke er installert på systemet ditt, kan du enkelt installere det via pakkelederen din (apt-get på Debian/Ubuntu og yum på RHEL/CentOS/Fedora).
$ sudo apt-get install grep #Debian/Ubuntu
$ sudo yum install grep #RHEL/CentOS/Fedora
Jeg har funnet ut at den enkleste måten å bli våt på føttene med grep er å bare dykke rett inn og bruke noen virkelige eksempler.
La oss si at du nettopp har installert en ny kopi av den nye Ubuntu på maskinen din, og som du skal gi Python skrive et skudd. 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 som ble installert på systemet av
Ubuntu installasjonsprogrammet, eller hvis det installerte noen moduler. Bare kjør denne kommandoen:# dpkg -l | grep -i python
ii python2.7 2.7.3-0ubuntu3.4 Interaktivt objektorientert språk på høyt nivå (versjon 2.7) ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimal undersett av Python-språket (versjon 2.7) ii python-openssl 0.12-1ubuntu2.1 Python-wrapper rundt OpenSSL-biblioteket. ii python-pam 0.4.2-12.2ubuntu4 Et Python-grensesnitt til PAM-biblioteket
Først løp vi dpkg –l, som viser installerte *.deb pakker på systemet ditt. For det andre pipet vi den utgangen til grep –i python, som enkle tilstander "gå til grep og filtrer ut og returner alt med" python "i den." De -Jeg alternativet er der for å ignorere-case, som grep er store og små bokstaver. Bruker -Jeg alternativet er en god vane å komme inn på, med mindre du selvfølgelig prøver å spike et mer spesifikt søk.
De grep kan også brukes til å søke og filtrere i individuelle filer eller flere filer. La oss ta dette scenariet:
Du har problemer med din Apache webserver, og du har kontaktet et av de mange fantastiske forumene på nettet og bedt om litt hjelp. Den snille sjelen som svarer deg har bedt deg om å legge inn innholdet i din /etc/apache2/sites-available/default-ssl fil. Ville det ikke vært lettere for deg, fyren som hjelper deg og alle som leser det, hvis du kunne fjerne alle kommentarene? Vel, du kan! Bare kjør dette:
# grep –v “#”/etc/apache2/sites-available/default-ssl
De –V alternativet forteller grep for å snu utgangen, noe som betyr at i stedet for å skrive ut matchende linjer, gjør det motsatte og skriver ut alle linjene som ikke samsvarer med uttrykket, i dette tilfellet # kommenterte linjer.
De grep kan være veldig 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 alt *.mp3 filer fra artisten Jay Z, men du vil ikke ha noen av de remikserte låtene. Bruker en finn kommando med et par grep rør vil gjøre susen:
# finne. –Navn “*.mp3” | grep –i JayZ | grep –vi “remiks”
I dette eksemplet bruker vi find til å skrive ut alle filene med a *.mp3 forlengelse, rør det til grep –i for å filtrere ut og skrive ut alle filer med navnet "Jay Z”Og deretter et annet rør til grep –vi som filtrerer ut og ikke skriver ut alle filnavnene med strengen (uansett) "remiks”.
Foreslått lesning:35 Praktiske eksempler på Linux Find Command
Et annet par alternativer er -EN og –B switches, som viser den matchede linjen og antall linjer enten som kommer før eller etter søkestrengen. Mens mannssiden gir en mer detaljert forklaring, synes jeg det er lettest å huske alternativene som -EN = etter, og –B = før:
# ifconfig | grep –A 4 eth0. # ifconfig | grep -B 2 OPP
Greps –C alternativet er likt, men i stedet for å skrive ut linjene som kommer enten før eller etter strengen, skriver det ut linjene i begge retninger:
# ifconfig | grep –C 2 lo
Ligner på rør a grep streng til ordtall (toalett program) greps innebygde alternativ kan utføre det samme for deg:
# ifconfig | grep –c inet6
De –N alternativ for grep er veldig nyttig når du feilsøker filer under kompileringsfeil. Det viser linjenummeret i filen til den angitte søkestrengen:
# grep –n “main” -oppsett..py
Hvis du vil søke etter en streng i den nåværende katalogen sammen med alle underkatalogene, kan du angi –R muligheten til å søke rekursivt:
# grep –r “funksjon” *
Passerer –W alternativ for grep -søk 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 ettersom vi ikke søker etter et mønster, men et helt ord.
Fortjener noen omtale er greps derivater. Den første er zgrep, som ligner på zcat, er til bruk på gzipped filer. Det tar de samme alternativene som grep og brukes på samme måte:
# zgrep –i feil /var/log/syslog.2.gz
De egrep er et annet derivat som står for "Utvidet global regulær uttrykk”. Det gjenkjenner ytterligere uttrykk metakarakterer slik på +? | og ().
Foreslått lesning:Hva er forskjellen mellom Grep, Egrep og Fgrep i Linux?
egrep er veldig nyttig for å søke etter kildefiler og andre kodebiter, hvis behovet skulle oppstå. Det kan påkalles fra vanlig grep ved å spesifisere –E alternativ.
# grep –E
De 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 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 sannsynligvis kan se, er det uvurderlig for en rekke formål. Bortsett fra de enkle kommandoene vi har implementert, grep kan brukes til å skrive kraftig cron jobber, og robust skallskript, til å begynne med.
Vær kreativ, eksperimenter med alternativene i mannsside, og kom med grep uttrykk som tjener dine egne formål!