Skip to main content

Exempel Användningar av Linux grep Command

Drumfanfare Exempel tijdens Taptoe 's Hertogenbosch 2019 (April 2025)

Drumfanfare Exempel tijdens Taptoe 's Hertogenbosch 2019 (April 2025)
Anonim

Linux grep-kommandot används som en metod för filtrering av inmatning. GREP står för Global Regular Expression Printer och därför bör du ha kunskap om reguljära uttryck för att kunna använda det effektivt.

I den här artikeln kommer du att lära dig ett antal exempel som hjälper dig att förstå grep-kommandot.

01 av 09

Hur man söker efter en sträng i en fil med hjälp av GREP

Tänk dig att du har en textfil kallad böcker med följande barns boktitlar:

  • Robin Hood
  • Lilla Rödluvan
  • Peter Pan
  • Guldlock och de tre björnarna
  • Snövit och de sju dvärgarna
  • Pinnochio
  • Katten i hatten
  • De tre små grisarna
  • Gruffalo
  • Kalle och chokladfabriken

För att hitta alla böcker med ordet "The" i titeln skulle du använda följande syntax:

grep böckerna

Följande resultat kommer att returneras:

  • Guldlock och de tre björnarna
  • Snövit och de sju dvärgarna
  • Katten i hatten
  • De tre små grisarna
  • Gruffalo
  • Kalle och chokladfabriken

I varje fall kommer ordet "The" att markeras.

Sökningen är skiftlägeskänslig, så om en av titlarna hade "den" istället för "The" skulle den inte ha returnerats.

För att ignorera fallet kan du lägga till följande omkopplare:

grep böckerna --ignore-case

Du kan också använda -i-omkopplaren enligt följande:

grep -i böckerna

Fortsätt läsa nedan

02 av 09

Sök efter en sträng i en fil med jokertecken

Grep-kommandot är mycket kraftfullt. Du kan använda en mängd mönstermatchningstekniker för att filtrera resultat.

I det här exemplet kommer jag att visa dig hur man söker efter en sträng i en fil med jokertecken.

Tänk dig att du har en fil som heter platser med följande skotska platsnamn:

aberdeenaberystwythAberlourinverurieinvernessnewburghny hjortny gallowayglasgowedinburgh

Om du vill hitta alla platser med inver i namnet använd följande syntax:

grep inver * platser

Den asteriska (*) jokertecken står för 0 eller många. Därför om du har en plats som kallas inver eller en plats som heter Inverness, så skulle båda returneras.

Ett annat jokertecken som du kan använda är perioden (.). Du kan använda detta för att matcha ett enstaka brev.

grep inver.r platser

Ovanstående kommando skulle hitta platser som kallas inverurie och inverary men skulle inte hitta invereerie eftersom det bara kan vara ett jokertecken mellan de två r som betecknas av den enskilda perioden.

Perioden wildcard är användbar men det kan orsaka problem om du har en som en del av texten du söker.

Titta till exempel på den här listan över domännamn

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

För att hitta alla om .coms kan du bara söka med följande syntax:

grep * om * domännamn

Ovanstående kommando skulle falla ned om listan innehöll följande namn i det:

  • everydaylinuxuser.com/about.html

Du kan därför prova följande syntax:

grep * about.com domännamn

Detta skulle fungera okej om det inte fanns en domän med följande namn:

aboutycom.com

För att verkligen söka efter termen about.com skulle du behöva flytta pricken enligt följande:

grep * om .com domännamn

Det sista jokerteckenet som visar dig är frågetecknet som står för noll eller ett tecken.

Till exempel:

grep? ber platsnamn

Ovanstående kommando skulle returnera aberdeen, aberystwyth eller till och med berwick.

Fortsätt läsa nedan

03 av 09

Sök efter strängar i början och slutet av raden med grep

Karat (^) och dollar ($) symbolen låter dig söka efter mönster i början och slutet av raderna.

Tänk dig att du har en fil som heter fotboll med följande lagnamn:

  • Blackpool
  • liverpool
  • Manchester City
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC United Of Manchester

Om du ville hitta alla lag som började med Manchester skulle du använda följande syntax:

grep ^ Manchester lag

Ovanstående kommando skulle återvända Manchester City och Manchester United men inte FC United Of Manchester.

Alternativt kan du hitta alla lag som slutar med United med följande syntax:

grep United $ lag

Kommandot ovan skulle återvända till Manchester United och Newcastle United men inte FC United Of Manchester.

04 av 09

Att räkna antalet matcher med grep

Om du inte vill returnera de faktiska raderna som matchar ett mönster med grep men du bara vill veta hur många det finns kan du använda följande syntax:

grep -c mönster inputfil

Om mönstret matchades två gånger skulle nummer 2 returneras.

Fortsätt läsa nedan

05 av 09

Hitta alla de villkor som inte matchar med grep

Tänk dig att du har en lista med platsnamn med de länder som listas enligt följande:

  • Aberdeen Skottland
  • glasgow Scotland
  • liverpool England
  • colwyn bay
  • London, England

Du kanske har märkt att colwyn bay inte har något land i samband med det.

För att söka efter alla platser med ett land kan du använda följande syntax:

grep land $ platser

Resultatet avkastningen skulle vara alla platser utom Colwyn Bay.

Detta verkar helt klart bara för platser som slutar i mark (knappast vetenskapligt).

Du kan invertera valet med följande syntax:

grep -v land $ platser

Detta skulle hitta alla platser som inte slutade med mark.

06 av 09

Så här hittar du tomma linjer i filer med grep

Tänk dig att du har en inmatningsfil som används av en tredje part som slutar läsa filen när den hittar en tom rad enligt följande:

  • aberdeen scotland
  • inverness scotland
  • liverpool england
  • colwyn bay wales

När applikationen kommer till linjen efter liverpool kommer den sluta läsa meningen colwyn bay missas helt.

Du kan använda grep för att söka efter tomma rader med följande syntax:

grep ^ $ platser

Tyvärr är det inte särskilt användbart eftersom det bara returnerar de tomma linjerna.

Du kan givetvis räkna med antalet tomma linjer som en check för att se om filen är giltig enligt följande:

grep -c ^ $ platser

Det skulle dock vara mer användbart att känna till radnummer som har en tom linje så att du kan ersätta dem. Du kan göra det med följande kommando:

grep -n ^ $ platser

Fortsätt läsa nedan

07 av 09

Så här söker du efter strängar med stora eller små bokstäver med grep

Med grep kan du bestämma vilka rader i en fil som har stora bokstäver med följande syntax:

grep 'A-Z' filnamn

Korgfästena låter dig bestämma antalet tecken. I ovanstående exempel matchar det alla tecken som ligger mellan A och Z.

För att matcha små bokstäver kan du använda följande syntax:

grep 'a-z' filnamn

Om du bara vill matcha bokstäver och inte numerik eller andra symboler kan du använda följande syntax:

grep 'a-zA-Z' filnamn

Du kan göra detsamma med siffror enligt följande:

grep '0-9' filnamn 08 av 09

Letar efter repeterande mönster med grep

Du kan använda hakparenteser {} för att söka efter ett repeterande mönster.

Tänk dig att du har en fil med telefonnummer enligt följande:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Du vet att den första delen av numret måste vara tre siffror och du vill hitta de linjer som inte matchar det här mönstret.

Från föregående exempel vet du att 0-9 returnerar alla nummer i en fil.

I det här fallet vill vi ha linjerna som börjar med tre siffror följt av en bindestreck (-). Du kan göra det med följande syntax:

grep "^ 0-9 0-9 0-9 -" siffror

Som vi vet från tidigare exempel betyder karat (^) att linjen måste börja med följande mönster.

0-9 söker efter ett tal mellan 0 och 9. Eftersom detta ingår tre gånger matchar det 3 nummer. Slutligen finns det en bindestreck för att ange att en bindestreck måste lyckas med de tre siffrorna.

Genom att använda de krökta parenteserna kan du göra sökningen mindre enligt följande:

grep "^ 0-9 {3 } -" nummer

Snedstrecket undviker {bracket så att det fungerar som en del av det reguljära uttrycket men i huvudsak vad detta säger är 0-9 {3} vilket betyder ett tal mellan 0 och 9 tre gånger.

De krökta hakarna kan också användas enligt följande:

{5,10}{5,}

{5,10} betyder att tecknet som sökes efter måste upprepas minst 5 gånger men inte mer än 10 medan {5,} betyder att tecknet måste upprepas minst 5 gånger, men det kan vara mer än det.

Fortsätt läsa nedan

09 av 09

Använda utgången från andra kommandon Använda grep

Hittills har vi tittat på mönster matchning inom enskilda filer, men grep kan använda utmatningen från andra kommandon som inmatning för mönster matchning.

Ett bra exempel på detta använder PS-kommandot som listar aktiva processer.

Till exempel kör följande kommando:

ps -ef

Alla körprocesser på ditt system visas.

Du kan använda grep för att söka efter en viss körprocess enligt följande:

ps -ef | grep firefox

Sammanfattning

Grep-kommandot är ett grundläggande Linux-kommando och det är en som är värt att lära sig, eftersom det kommer att göra ditt liv mycket enklare när du söker efter filer och processer när du använder terminalen.