grep

Linux grep-kommando

Linux grep-kommando
Grep er et av de letteste verktøyene du kan ha til din disposisjon. Dette kommandolinjeprogrammet utfører et søk i datasett med ren tekst. Grep er faktisk et akronym for “globalt søk a regular expression og srint ”. Grep startet reisen som en del av UNIX-familien. Over tid er den nå tilgjengelig for alle populære plattformer som Linux, Mac, BSD og til og med Windows!

Har du brukt grep før? Det meste av tiden kan det grunnleggende grep-trikset gjøre det meste av jobben. Grep tilbyr imidlertid mange måter å utføre søket på og finjustere utdataene til en mer brukbar versjon. I denne artikkelen, la oss sjekke ut bruken av grep-kommandoen.

Grep bruk

Bekreftende eksistens

Hvis du kjører noen form for Linux-distro, har du allerede grep installert. Kjør følgende kommando i terminalen.

grep - versjon

Denne kommandoen brukes til å vise versjonen av installert grep. Nå trenger vi en demofil. I mitt tilfelle genererer jeg en tekstfil som inkluderer alle de installerte pakkene på systemet mitt.

Grunnleggende

Den grunnleggende bruken av grep følger følgende struktur.

grep

Eller for å gjøre det lettere å forstå, bruk denne.

grep -e -f

I dette tilfellet vil grep utføre et søk i filen og skrive ut alle linjene som inkluderer mønsteret (søkeord).

grep python ~ / Desktop / PackageList.tekst

Grep søkte i filen “PackageList.txt ”Jeg genererte tidligere og skrev ut alle linjene som inkluderer“ python ”.

Den samme operasjonen kan utføres på en annen måte. Ta en titt på følgende eksempel.

cat ~ / Desktop / PackageList.txt | grep python

Her sendte jeg innholdet i filen "PackageList" ved hjelp av "cat" -kommandoen.txt ”til grep. Ved å bruke utdataene fra cat utførte grep søket og skrev ut linjene som inneholder søkeordet.

Nå kommer en morsom ting. Du kan bokstavelig talt stable flere grep-kommandoer akkurat slik.

cat ~ / Desktop / PackageList.txt | grep - | grep p | grep python

Den første grep filtrerer ned til linjene med en bindestrek, det andre filteret ned til linjene med p, og den siste grep filtrerer ned til linjene med python. Gir mening?

Saksfølsomhet

Når du utfører et søk, er saksfølsomhet et stort spørsmål. Som standard er grep skiftesensitiv.

Hvis du for eksempel søker etter "Python" ikke viser noe resultat.

cat ~ / Desktop / PackageList.txt | grep Python

For å gjøre grep-bokstaven "ufølsom", legg til følgende alternativ.

cat ~ / Desktop / PackageList.txt | grep -i Python

Filsøk

La oss si at du har en katalog med mange tekstfiler. Målet ditt er å identifisere filen (e) som inneholder eller ikke inneholder et mønster (søkeord).

Jeg synes denne metoden er ganske nyttig når jeg søker i en haug med loggfiler. Siden jeg ikke har tid til å åpne og sjekke hver eneste fil manuelt, har jeg grep til å gjøre jobben for meg.

For å liste opp filer som inneholder samsvar, bruk “-l” -flagget.

grep -l / søk / katalog / *

Som resultatet antyder, er begrepet "python" til stede i alle de 3 filene som er tilstede i "Desktop" -katalogen.

For å liste opp filer uten samsvar, bruk “-L” -flagget.

grep -L / søk / katalog / *

"Ingen treff.txt ”er den eneste filen som ikke inneholder begrepet“ python ”.

Invertert søk

Standard oppførsel for grep er å skrive ut bare linjene med det matchende mønsteret, til høyre? Det er på tide å snu prosessen. Denne gangen skriver vi bare ut linjene UTEN det matchende mønsteret.

Bare gi alternativet “-v” til grep.

cat ~ / Desktop / PackageList.txt | grep -i -v Python

Skrive ut linjer før / etter kampen

Som standard vil grep bare skrive ut linjen som samsvarer med søkemønsteret. Ved hjelp av denne teknikken kan du fortelle grep å skrive ut linjer før / etter kampen også.

Bruk følgende struktur for å skrive ut linjer før kampen.

grep -B

Her er 5 talllinjen som grep vil skrive ut FØR den matchende linjen.

For å skrive ut linjer etter kampen, bruk følgende.

grep -A

Hva med å skrive ut både før og etter matchende linje? I så fall bruker du “-C” -flagget.

grep -C

Linjenummer

Når grep viser utdataene, nevner det ikke linjenummeret. For tilhørende linjenummer (er), bruk “-n” flagget.

grep -n

Enkelt ord

Hvis flagget “-w” brukes, vil grep behandle mønsteret som et helt ord.

grep -w

Begrensende grep-søk

Grep tillater å spesifisere antall linjer som skal søkes i filen. Denne metoden er nyttig hvis du har å gjøre med en stor fil (som systemlogg). Bruk flagget “-m”.

grep -m

Rekursivt søk

Det er en av de mest nyttige funksjonene grep tilbyr for tung bruk. Grep kan søke rekursivt i en katalog og finne alle treffene fra alle filene den står overfor.

grep -R

Eller,

grep -r

Jeg finner ofte å bruke denne rekursive funksjonen sammen med “-l” -flagget.

Stillemodus

Grep kan kjøres i "stille" modus. Når du kjører i "stille" modus, vil ikke grep skrive ut noen utdata til terminalen. I stedet vil den returnere 0 (i det minste ble det funnet en kamp) eller 1 (ingen treff funnet).

grep -q
ekko $?

Regex

Grep tillater også regex-søk (regulært uttrykk). Dette legger til et helt nytt nivå av kompleksitet og brukbarhet av grep som et søkeverktøy.

For eksempel kan du bruke parenteser for å søke etter både "for" og "to" samtidig.

cat ~ / Desktop / gpl-3.0.txt | grep t [wo] o

Dette neste eksemplet vil bare skrive ut linjen hvis kampen skjer helt på begynnelsen av linjen.

grep ^ GNU ~ / Desktop / gpl-3.0.tekst

Når det gjelder å matche slutten, bruk denne.

grep deg $ ~ / Desktop / gpl-3.0.tekst

Hvis du vil bruke Perl regex, bruker du “-P” -flagget. Det vil behandle mønsteret som Perl regex.

grep -P

Siste tanker

Grep tilbyr mange måter å tilpasse søkefunksjonen på. Tilgjengeligheten av regex låser opp en helt ny horisont for potensiell bruk av grep. Det kule er at du kan bruke både generell og Perl regex; uansett hva du føler deg komfortabel med.

For den mest detaljerte forklaringen, se alltid mannssiden.

mann grep

Jubel!

Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...
Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...