Grep-kommandoen bruges til at søge efter strenge i en tekstfil. Her er ti eksempler på grep, som du måske finder nyttige.
Kommandoen grep giver adgang til grep-værktøjet, et kraftfuldt filbehandlingsværktøj, der bruges til at finde mønstre i tekstfiler. Det har mange praktiske brugssager og er bestemt en af de mest anvendte Linux-kommandoer. Denne guide illustrerer nogle enkle, men nyttige Linux grep-kommandoer, der har virkelige anvendelser.
Eksempel på fil til demonstration
Vi har oprettet en referencefil, der hjælper læserne med at forstå grep mere effektivt. Du kan oprette en kopi af denne fil ved at udstede følgende shell-kommando i din terminal.
kat <> test-fil
Dette er en simpel tekstfil, der indeholder
flere strenge samt nogle telefonnumre
(555) 555-1234 (567) 666-2345
og e-mail plus webadresser
[email protected]
https://google.com
ftp://mywebserver.com
ENDE
1. Find tekst i filer
For at søge efter tekstmønster i en fil skal du blot køre grep efterfulgt af mønsternavnet. Angiv også navnet på den fil, der indeholder teksten.
grep "e-mail" testfil
Denne kommando viser linjen i vores test-fil der indeholder ordet e-mail. Du kan også søge i den samme tekst i flere filer ved hjælp af grep.
grep "eksempel" / usr / share / dict / american-english / usr / share / dict / british-english
Ovenstående kommando viser alle forekomster af ordet eksempel i amerikansk engelsk og britisk engelsk ordboksfiler.
2. Find nøjagtige matchord
Linux grep-kommandoen illustreret i det tidligere eksempel viser også linjer med delvise matches. Brug kommandoen nedenfor, hvis du kun har brug for de nøjagtige forekomster af et ord.
grep -w "streng" testfil
Det -w eller --ord-regexp mulighed for grep begrænser kun output til nøjagtige matches. Grep består af nogle ekstra flag, der også kan bruges med standardkommandoen.
Relaterede: Hvordan Grep fik sit navn? Historien bag Greps oprettelse
3. Ignorer sagsforskelle
Som standard søger grep efter mønstre på en skift mellem store og små bogstaver. Det kan dog være en god idé at slå dette fra, hvis du ikke ved i hvilket tilfælde mønsteret er på forhånd.
grep -i "denne" testfil
Brug -jeg eller - stor sag mulighed for at deaktivere sagsfølsomhed.
4. Tæl antallet af mønstre
Det -c flag står for tælle. Det viser antallet af matches, der blev fundet for et bestemt mønster. Administratorer kan bruge dette til at hente specifikke oplysninger om systemet.
Du kan pibe ps-kommandoen med grep for at tælle de processer, der tilhører den aktuelle bruger.
ps -ef | grep -c $ BRUGER
Den følgende kommando viser antallet af MP3 filer til stede i et bibliotek.
ls ~ / Musik | grep -c .mp3
5. Vis linjenumre, der indeholder matches
Det kan være en god idé at finde de linjenumre, der indeholder et bestemt match. Brug -n eller --linjenummer mulighed for grep for at opnå dette.
kat / etc / passwd | grep -n rubaiat
Denne mulighed er især nyttig til fejlretning kildekoder og fejlfinding af logfiler. For at få vist alle numrene for linjer i ~ / .vimrc der bruges til konfiguration af Vim-teksteditoren:
grep -n "sæt" ~ / .vimrc
6. Find filnavne ved hjælp af udvidelser
For at få en liste over alle MP3 filer til stede i ~ / Musik vejviser:
ls ~ / Musik / | grep ".mp3"
Du kan erstatte .mp3 med andre udvidelser til lokalisering af specifikke filer. Den følgende kommando viser alle php filer til stede i den aktuelle arbejdsmappe.
ls | grep ".php"
7. Find mønstre i komprimerede filer
Linux grep-kommando kan også finde mønstre inde i komprimerede filer. Du bliver nødt til at bruge zgrep kommando til at gøre dette, dog. Opret først et komprimeret arkiv af vores test-fil ved at skrive:
gzip testfil
Nu kan du søge efter tekst eller andre mønstre i det resulterende arkiv.
zgrep e-mail test-fil.gz
8. Find e-mail-adresser
Administratorer kan også liste e-mail-adresser fra tekstfiler ved hjælp af Linux grep-kommandoen. Følgende eksempel gør dette ved at søge efter et mønster med et regulært udtryk.
grep '^ [a-zA-Z0-9] \ + @ [a-zA-Z0-9] \ + \. [a-z] \ {2, \}' testfil
Du kan finde regelmæssige udtryk for at udføre lignende job, eller du kan oprette dem selv, hvis du ved, hvordan de fungerer.
9. Find telefonnumre ved hjælp af Grep
Du kan bruge grep regulære udtryk til at filtrere telefonnumre fra en tekstfil. Bemærk, at du bliver nødt til at tilpasse mønsteret for at matche den type telefonnumre, du har brug for.
grep '\ ([[0-9] \ {3 \}) \ | [0-9] \ {3 \} \) [-] \? [0-9] \ {3 \} [-] \? [0-9] \ {4 \} 'testfil
Den førnævnte kommando filtrerer ti-cifrede amerikanske telefonnumre.
10. Find URL'er fra kildefiler
Vi kan udnytte kraften i grep til at angive webadresser, der findes i tekstfiler. Nedenstående kommando udskriver alle de URL'er, der findes i test-fil.
grep -E "^ (http | https | ftp): [\ /] {2} ([a-zA-Z0-9 \ - \.] + \. [a-zA-Z] {2,4}) "test-fil
Vi bruger igen -E mulighed for udvidede regulære udtryk. Du kan også bruge egrep kommando for at undgå at tilføje dette.
egrep "^ (http | https | ftp): [\ /] {2} ([a-zA-Z0-9 \ - \.] + \. [a-zA-Z] {2,4})" test -fil
Mestring af Linux Grep Command
Vi har præsenteret flere nyttige eksempler på Linux grep-kommandoen til løsning af problemer i den virkelige verden. Selvom disse eksempler illustrerer kraften i grep til tekstbehandling, skal du mestre regulære udtryk, hvis du vil være superproduktiv med grep.
Nogle gange støder Linux-brugere på bestemte situationer, hvor de ikke kan huske de forskellige muligheder relateret til en kommando. Forhåbentlig giver Linux-operativsystemet dig måder at få kommandolinjehjælp til næsten alle systemværktøjer.
Alle de vigtige kommandoer til at lære om Linux-kommandoer fra kommandolinjen
Læs Næste
- Linux
- Linux
- Linux-kommandoer
Rubaiat er en CS grad med en stærk passion for open source. Bortset fra at være Unix-veteran, er han også interesseret i netværkssikkerhed, kryptografi og funktionel programmering. Han er en ivrig samler af brugte bøger og har en uendelig beundring for klassisk rock.
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.