grep

Linux grep-kommando

Linux grep-kommando
Grep er et af de smukkeste værktøjer, du kan have til din rådighed. Dette kommandolinjeprogram udfører en søgning i datasæt med almindelig tekst. Grep er faktisk et akronym for “globalt søgning a regular expression og srint ”. Grep startede sin rejse som en del af UNIX-familien. Over tid er det nu tilgængeligt for alle de populære platforme som Linux, Mac, BSD og endda Windows!

Har du brugt grep før? Det meste af tiden kan det grundlæggende grep-trick gøre det meste af arbejdet. Grep tilbyder dog mange måder at udføre søgningen på og finjustere output til en mere brugbar version. Lad os i denne artikel tjekke brugen af ​​kommandoen grep.

Grep brug

Bekræftelse af eksistens

Hvis du kører nogen form for Linux-distro, har du allerede grep installeret. Kør følgende kommando i terminalen.

grep --version

Denne kommando bruges til at vise versionen af ​​aktuelt installeret grep. Nu har vi brug for en demo-fil. I mit tilfælde genererer jeg en tekstfil, der indeholder alle de installerede pakker på mit system.

Grundlæggende

Den grundlæggende anvendelse af grep følger følgende struktur.

grep

Eller for at gøre det lettere at forstå, brug denne.

grep -e -f

I dette tilfælde udfører grep en søgning i filen og udskriver alle de linjer, der inkluderer mønsteret (søgeudtryk).

grep python ~ / Desktop / PackageList.txt

Grep søgte i filen “PackageList.txt ”Jeg genererede tidligere og udskrev alle linjer, der inkluderer“ python ”.

Den samme operation kan udføres på en anden måde. Tjek følgende eksempel.

cat ~ / Desktop / PackageList.txt | grep python

Her sendte jeg indholdet af filen "PackageList" ved hjælp af kommandoen "cat".txt ”til grep. Ved hjælp af output fra kat udførte grep søgningen og udskrev de linjer, der indeholder søgeudtrykket.

Nu kommer en sjov ting. Du kan bogstaveligt talt stable flere grep-kommandoer sådan.

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

Den første grep filtrerer ned til linjerne med en bindestreg, det andet filter ned til linjerne med p, og den sidste grep filtrerer ned til linjerne med python. Giver mening?

Sagsfølsomhed

Når du udfører en søgning, er sagsfølsomhed et stort spørgsmål. Som standard er grep store og små bogstaver.

For eksempel viser søgning efter “Python” ikke noget resultat.

cat ~ / Desktop / PackageList.txt | grep Python

For at gøre grep til "ufølsom" skal du tilføje følgende mulighed.

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

Fil søgning

Lad os sige, at du har et bibliotek med mange tekstfiler. Dit mål er at identificere de filer, der indeholder eller ikke indeholder et mønster (søgeudtryk).

Jeg finder denne metode ret nyttig, når jeg søger i en bunke med logfiler. Da jeg ikke har tid til at åbne og kontrollere hver enkelt fil manuelt, har jeg grep til at gøre jobbet for mig.

Brug “-l” -flaget til at liste filer, der indeholder matchet.

grep -l / søg / katalog / *

Som resultatet antyder, er udtrykket "python" til stede i alle 3 filer, der findes i "Desktop" -mappen.

Brug “-L” flag til at liste filer uden nogen match.

grep -L / søg / katalog / *

"Intet match.txt ”er den eneste fil, der ikke indeholder udtrykket“ python ”.

Inverteret søgning

Standarden for grep er kun at udskrive linjerne med det matchende mønster, højre? Det er tid til at vende processen. Denne gang udskriver vi kun linjerne UDEN det matchende mønster.

Bare send "-v" indstillingen til grep.

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

Udskrivning af linjer før / efter kampen

Som standard udskriver grep kun den linje, der matcher søgemønsteret. Ved hjælp af denne teknik kan du også fortælle grep at udskrive linjer før / efter kampen.

Brug følgende struktur til at udskrive linjer før kampen.

grep -B

Her er 5 den tallinje, som grep udskriver FØR den matchende linje.

Brug følgende til udskrivning af linjer efter kampen.

grep -A

Hvad med at udskrive både før og efter den matchende linje? I så fald skal du bruge “-C” -flagget.

grep -C

Linjenummer

Når grep viser output, nævnes det ikke linjenummeret. For de tilknyttede linjenumre skal du bruge “-n” flag.

grep -n

Enkelt ord

Hvis flaget “-w” bruges, behandler grep mønsteret som et helt ord.

grep -w

Begrænsning af grep-søgning

Grep tillader at specificere antallet af linjer, der skal søges i filen. Denne metode er nyttig, hvis du har at gøre med en stor fil (som systemlog). Brug flaget “-m”.

grep -m

Rekursiv søgning

Det er en af ​​de mest nyttige funktioner, som grep tilbyder til tung brug. Grep kan søge rekursivt i et bibliotek og finde alle matches fra alle de filer, det står over for.

grep -R

Eller,

grep -r

Jeg finder ofte brugen af ​​denne rekursive funktion sammen med “-l” -flagget.

Stille tilstand

Grep kan køres i “stille” tilstand. Når du kører i "stille" tilstand, udskriver grep ikke noget output til terminalen. I stedet returnerer den 0 (i det mindste blev der fundet et match) eller 1 (ingen match fundet).

grep -q
ekko $?

Regex

Grep tillader også regex-søgninger (regulært udtryk). Dette tilføjer et helt nyt niveau af kompleksitet og anvendelighed af grep som et søgeværktøj.

For eksempel kan du bruge parenteser til at søge efter både "også" og "to" på samme tid.

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

Dette næste eksempel udskriver kun linjen, hvis kampen finder sted i begyndelsen af ​​linjen.

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

Brug denne til at matche slutningen.

grep dig $ ~ / Desktop / gpl-3.0.txt

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

grep -P

Afsluttende tanker

Grep tilbyder mange måder at tilpasse søgefunktionen på. Tilgængeligheden af ​​regex låser op for en helt ny horisont for potentiel brug af grep. Det seje er, at du kan bruge både generel og Perl regex; uanset hvad du har det godt med.

For den mest detaljerede forklaring, se altid mandsiden.

mand grep

Skål!

Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...
Top 10 spil at spille på Ubuntu
Windows-platform har været en af ​​de dominerende platforme til spil på grund af den enorme procentdel af spil, der udvikler sig i dag til indbygget a...
5 bedste arkadespil til Linux
I dag er computere seriøse maskiner, der bruges til spil. Hvis du ikke kan få den nye høje score, ved du hvad jeg mener. I dette indlæg vil du kende n...