Ukaz grep za Linux



ukaz grep

Vklopljeno Unixu podoben operacijski sistemi, oprijem ukaz obdela besedilo po vrsticah in natisne vse vrstice, ki se ujemajo z določenim vzorcem.



Ta stran zajema GNU / Linux različica oprijem .

Sintaksa

grep [  OPTIONS  ]  PATTERN  [  FILE  ...]

Pregled

Grep, ki pomeni 'globalni regularni izraz', je močno orodje za ujemanje vsakdanje izražanje proti besedilu v datoteki, več datotekah ali toku vnosa. Išče VZOREC besedila, ki ste ga navedli v ukazni vrstici, in za vas prikaže rezultate.

Primer uporabe

Recimo, da želimo hitro najti besedno zvezo ' naši izdelki 'v datotekah HTML na vašem računalniku. Začnimo z iskanjem ene datoteke. Tukaj, naš VZOREC je 'naši izdelki' in naše MAPA je product-listing.html .

kopiranje preprostega niza z eno datoteko kot vhodom

Najdena je bila ena vrstica, ki vsebuje naš vzorec, in oprijem na terminal prikaže celotno ujemajočo se vrstico. Vrstica je daljša od širine terminala, zato se besedilo zavije v naslednje vrstice, vendar ta izhod ustreza natančno eni vrstici v našem MAPA .

Opomba

The VZOREC razlaga oprijem kot regularni izraz. V zgornjem primeru so interpretirani vsi znaki, ki smo jih uporabili (črke in presledek) dobesedno v regularnih izrazih, tako da se bo ujemala le natančna fraza. Drugi znaki pa imajo poseben pomen - na primer nekatera ločila. Za več informacij glejte: Hitri sklic na regularni izraz .

Ogled izpisa grep v barvi

Če uporabimo - Barva možnost, bodo za nas poudarjene naše uspešne tekme:

kako obnoviti windows 10 na starejši datum

z uporabo grep z možnostjo --color za poudarjanje ujemanj

Ogled številk vrstic uspešnih tekem

Še bolj koristno bo, če bomo vedeli, kje se v naši datoteki pojavi ujemajoča se vrstica. Če določimo -n možnost, oprijem bo pred vsako predpogojno vrstico postavil predpono s številko vrstice:

z uporabo grep -n za predpono izhoda s številkami vrstic

Pred našo ujemajočo se vrstico je predpona ' 18: ', ki nam pove, da to ustreza vrstici 18 v naši datoteki.

Opravljanje iskanja grep, ki ne razlikuje med velikimi in malimi črkami

Kaj pa, če se na začetku stavka prikaže »naši izdelki« ali v velikih črkah? Lahko določimo -jaz možnost izvedbe a ne razlikuje med velikimi in malimi črkami tekma:

z uporabo grep -i za iskanje brez razlikovanja med velikimi in malimi črkami

Uporabljati -jaz možnost, oprijem najde ujemanje tudi na 23. vrstici.

Iskanje več datotek z nadomestnim znakom

Če imamo za iskanje več datotek, lahko vse poiščemo s pomočjo nadomestni znak v našem MAPA ime. Namesto da bi navedli product-listing.html , lahko uporabimo zvezdico (' * ') in .html podaljšanje. Ko se ukaz izvrši, lupina zvezdico razširi na ime katere koli datoteke, ki jo najde (v trenutni imenik ), ki se konča na ' .html '.

tipke na tipkovnici ne delujejo pravilno

z uporabo grep za iskanje več datotek z nadomestnim znakom

Upoštevajte, da se vsaka vrstica začne z določeno datoteko, kjer se to ujemanje zgodi.

Rekurzivno iskanje podimenikov

Naše iskanje lahko razširimo na podimeniki in vse datoteke, ki jih vsebujejo z uporabo -r možnost, ki pove oprijem za iskanje rekurzivno . Spremenimo svoje MAPA ime za zvezdica (' * '), tako da se ujema s katero koli datoteko ali imenom imenika in ne samo datotek HTML:

Uporaba grep -r za rekurzivno iskanje podimenikov

To nam daje še tri dodatne tekme. Upoštevajte, da je ime imenika vključeno za vse ustrezne datoteke, ki niso v trenutnem imeniku.

Uporaba regularnih izrazov za izvajanje močnejših iskanj

Resnična moč grepa je, da se lahko ujema z regularnimi izrazi. (To pomeni 're' v 'grep'). Regularni izrazi uporabljajo posebne znake v VZOREC niz, da se ujema s širšim naborom nizov. Oglejmo si preprost primer.

Recimo, da želite najti vsak pojav fraze podobno za »naše izdelke« v datotekah HTML, vendar se mora stavek vedno začeti z »naš« in končati z »izdelki«. To lahko določimo VZOREC namesto tega: 'naši izdelki' .

V regularnih izrazih je obdobje (' . ') se razlaga kot enoznakovni nadomestni znak. Pomeni, 'kateri koli znak, ki se pojavi na tem mestu, se bo ujemal.' Zvezdica (' * ') pomeni' prejšnji znak, ki se pojavi nič ali večkrat, se bo ujemal. ' Torej kombinacija ' . * 'se bo ujemalo poljubno število od kaj znak. Na primer, ' naši neverjetni izdelki ',' naši, najboljši doslej izdelki ', in celo ' naši izdelki 'se bo ujemalo. In ker smo določili -jaz možnost, ' NAŠI IZDELKI 'in' Naši izdelki se bo tudi ujemalo. Zaženimo ukaz s tem regularnim izrazom in si oglejmo, katera dodatna ujemanja lahko dobimo:

Vključitev regularnih izrazov v vzorec iskanja grep

Tu smo dobili tudi ujemanje iz stavka ' naši fini izdelki '.

Grep je močno orodje, ki vam pomaga pri delu z besedilnimi datotekami, in postane še bolj zmogljivo, ko se počutite udobno z uporabo regularnih izrazov.

Tehnični opis

oprijem išče poimenovani vnos MAPA s (ali standardni vhod če ni poimenovana nobena datoteka ali če je ena pomišljaj (' - ') je podan kot ime datoteke) za vrstice, ki vsebujejo ujemanje z dano VZOREC . Privzeto, oprijem natisne ustrezne črte.

Tudi trije različni programi egrep , fgrep in rgrep so na voljo:

  • egrep je enako kot tek grep -E . V tem načinu oprijem ocenjuje vaše VZOREC niz kot razširjeni regularni izraz (ERE). Dandanašnji ERE ne presega temeljnih regularnih izrazov, vendar so lahko še vedno zelo koristni. Za več informacij o razširjenih regularnih izrazih glejte: Osnovni in razširjeni regularni izrazi , spodaj.
  • fgrep je enako kot tek grep -F . V tem načinu oprijem ocenjuje vaše VZOREC niz kot 'fiksni niz' - vsak znak v nizu se obravnava dobesedno. Če na primer niz vsebuje zvezdico (' * '), oprijem jo bo poskušal uskladiti z dejansko zvezdico, namesto da bi to razlagal kot a nadomestni znak . Če vaš niz vsebuje več vrstic (če vsebuje nove vrstice), se bo vsaka vrstica štela za nespremenljiv niz in katera koli lahko sproži ujemanje.
  • rgrep je enako kot tek grep -r . V tem načinu oprijem opravi svoje iskanje rekurzivno . Če naleti na imenik, preide v ta imenik in nadaljuje z iskanjem. ( Simbolne povezave so prezrte; če želite iskati po imenikih, ki so simbolično povezani, uporabite -R namesto tega).

V starejših operacijskih sistemih egrep , fgrep in rgrep so bili ločeni programi z lastnimi izvršljivimi datotekami. V sodobnih sistemih so ta posebna imena ukazov bližnjice do oprijem z omogočenimi ustreznimi zastavicami. Funkcionalno so enakovredni.

Splošne možnosti

- pomoč Natisnite kratko sporočilo s pomočjo ukazna vrstica možnosti in zapustite.
-V , - različica Natisnite številko različice oprijem in izstopite.

Možnosti izbire ujemanja

-IS ,
--extended-regexp
Tolmači VZOREC kot razširjeni regularni izraz (glej: Osnovni in razširjeni regularni izrazi ).
-F , --fiksni nizi Tolmači VZOREC kot seznam fiksnih nizov, ločenih z nove vrstice , ki se ujema.
-G , --basic-regexp Tolmači VZOREC kot osnovni regularni izraz (glej: Osnovni in razširjeni regularni izrazi ). To je privzeta možnost med izvajanjem oprijem .
-P , --perl-regexp Tolmači VZOREC imajo a Perl vsakdanje izražanje. Ta funkcionalnost je še vedno poskusna in lahko povzroči opozorilna sporočila.

Možnosti nadzora ujemanja

-je VZOREC ,
--regexp = VZOREC
Uporaba VZOREC kot vzorec, ki se ujema. S tem lahko določite več vzorcev iskanja ali zaščitite vzorec, ki se začne s pomišljajem ( - ).
-f MAPA , --file = MAPA Pridobite vzorce iz MAPA , ena na vrstico.
-jaz , --ignore-case Prezri razlike med velikimi in malimi črkami v obeh VZOREC in vhodne datoteke.
-v , --invert-match Spremenite smisel ujemanja in izberite vrstice, ki se ne ujemajo.
-in , --word-regexp Izberite samo tiste vrstice, ki vsebujejo ujemanja, ki tvorijo cele besede. Preizkus je, da mora biti ustrezni podniz na začetku vrstice ali pred njim nebesedni sestavni znak. Ali pa mora biti na koncu vrstice ali ji mora slediti nebesedni sestavni znak. Besedni znaki so črke, številke in podčrtaji.
-x , - line-regexp Izberite samo ujemanja, ki se natančno ujemajo s celo vrstico.
-Ja Enako kot -jaz .

Splošni nadzor izhoda

-c , --šteti Namesto običajnega izpisa za vsako vhodno datoteko natisnite število ujemajočih se vrstic. Z -v , --invert-match možnost (glej spodaj), šteje neujemajoče se vrstice.
- Barva [= KDAJ ],
--barva [= KDAJ ]
Ujemajoče se (neprazne) nize, ujemajoče se vrstice, vrstice konteksta, imena datotek, številke vrstic, odmike bajtov in ločila (za polja in skupine kontekstnih vrstic) obdajte z zaporedji pobega, da jih na terminalu prikažejo v barvi. Barve določa spremenljivka okolja GREP_COLORS. Starejša spremenljivka okolja GREP_COLOR je še vedno podprta, vendar njena nastavitev nima prednosti. KDAJ je nikoli , nenehno , ali samodejno .
-L ,
--files-brez ujemanja
Namesto običajnega izpisa natisnite ime vsake vhodne datoteke, iz katere običajno ne bi bil natisnjen noben izhod. Optično branje se ustavi ob prvem ujemanju.
-l ,
--files-with-match
Namesto običajnega izpisa natisnite ime vsake vhodne datoteke, iz katere bi običajno natisnili izhod. Optično branje se ustavi ob prvem ujemanju.
-m ENO ,
--max-count = ENO
Nehajte brati datoteko po ENO ujemajoče se črte. Če je vnos standardni vnos iz običajne datoteke, in ENO ujemajoče se vrstice se izpišejo, grep zagotavlja, da je standardni vhod postavljen za zadnjo ujemajočo se vrstico pred izhodom, ne glede na prisotnost končnih linij konteksta. To omogoča, da klicni postopek nadaljuje iskanje. Kdaj oprijem se ustavi po ENO ujemajočih se vrstic, izpiše vse končne vrstice konteksta. Ko -c ali --šteti možnost se uporablja tudi, oprijem ne prikaže števila, večjega od ENO . Ko -v ali --invert-match možnost se uporablja tudi, grep se ustavi po izhodu ENO neskladne vrstice.
-ali , - samo ujemanje Natisnite samo usklajene (neprazne) dele ujemajoče se vrstice, pri čemer je vsak tak del na ločeni izhodni vrstici.
-q , --tih , - tiho Tih; ne zapisujte ničesar v standardni izhod. Takoj zapustite stanje nič, če najdete katero koli ujemanje, tudi če je bila zaznana napaka. Oglejte si tudi -s ali --no-sporočila možnost.
-s , --no-sporočila Zatiranje sporočil o napakah o neobstoječih ali neberljivih datotekah.

Nadzor predpone izhodne vrstice

-b , - odmik bajta Natisnite 0 bajt offset v vhodni datoteki pred vsako vrstico izhoda. Če -ali ( - samo ujemanje ), natisnite odmik samega ustreznega dela.
-H , --with-ime datoteke Natisnite ime datoteke za vsako ujemanje. To je privzeto, če želite iskati več datotek.
-h , --no-ime datoteke Potisnite predpono imen datotek na izhodu. To je privzeto, če želite iskati samo eno datoteko (ali samo standardni vnos).
- oznaka = LABEL Prikaži vhod, ki dejansko prihaja iz standardnega vhoda, kot vhod iz datoteke LABEL . To je še posebej koristno pri izvajanju orodij, kot je zgrep , npr. gzip -cd foo.gz | grep --label = foo -H nekaj . Glej tudi -H možnost.
-n , - vrstica-številka Pred vhodno datoteko v vsako vrstico predpone vnesite številko vrstice, ki temelji na 1.
-T , --začetni zavihek Prepričajte se, da je prvi znak dejanske vsebine vrstic na zavihku, tako da je poravnava zavihkov videti normalno. To je koristno pri možnostih, ki pred izhodom predpišejo dejansko vsebino: -H , -n , in -b . Da bi izboljšali verjetnost, da se bodo vrstice iz ene datoteke začele v istem stolpcu, bo to tudi povzročilo, da se številka vrstice in odmik bajta (če obstaja) natisneta v širini polja najmanjše velikosti.
-u ,
--unix-byte-offseti
Poročajte o odmikih bajtov v slogu Unixa. To stikalo povzroča oprijem za poročanje o premikih bajtov, kot da bi bila datoteka besedilna datoteka v slogu Unixa, torej z odvzetimi znaki CR. To daje rezultate, enake zagonu grep-a na Unixovem računalniku. Ta možnost nima učinka, razen če -b možnost se uporablja tudi; nima vpliva na druge platforme kot MS-DOS in MS-Windows .
-Z , --nič Iznesite nič bajta ( ASCII Znak NUL) namesto znaka, ki običajno sledi imenu datoteke. Na primer grep -lZ za vsakim imenom datoteke namesto običajnega izpiše nič bajt nova vrstica . S to možnostjo je izhod nedvoumen, tudi če obstajajo imena datotek, ki vsebujejo nenavadne znake, kot so nove vrstice. To možnost lahko uporabite z ukazi, kot je iskanje -tisk0 , perl -0 , razvrsti -s , in xargs -0 za obdelavo poljubnih imen datotek, tudi tistih, ki vsebujejo znake nove vrstice.

Nadzor kontekstne vrstice

-TO ENO ,
- po kontekstu = ENO
Natisni ENO vrstice končnega konteksta po ujemanju vrstic. Postavi vrstico, ki vsebuje ločilo skupine ( - ) med sosednjima skupinama tekem. Z -ali ali - samo ujemanje možnost nima učinka in je opozorjeno.
-B ENO ,
--before-context = ENO
Natisni ENO vrstice vodilnega konteksta pred ujemanjem vrstic. Postavi vrstico, ki vsebuje ločilo skupine ( - ) med sosednjima skupinama tekem. Z -ali ali - samo ujemanje možnost nima učinka in je opozorjeno.
-C ENO , - ENO ,
--context = ENO
Natisni ENO vrstice izhodnega konteksta. Postavi vrstico, ki vsebuje ločilo skupine ( - ) med sosednjima skupinama tekem. Z -ali ali - samo ujemanje možnost nima učinka in je opozorjeno.

Izbira datotek in imenikov

-do , --besedilo Obdelajte a binarno datoteka, kot da gre za besedilo; to je enakovredno --binarne datoteke = besedilo možnost.
--binarne datoteke = TIP Če prvih nekaj bajtov datoteke nakazuje, da datoteka vsebuje binarne podatke, predpostavimo, da je datoteka vrste TIP . Privzeto, TIP je binarno in grep običajno prikaže bodisi enovrstično sporočilo, ki pravi, da se binarna datoteka ujema, ali nobenega sporočila, če ni ujemanja. Če TIP je brez ujemanja, oprijem domneva, da se binarna datoteka ne ujema; to je enakovredno -JAZ možnost. Če TIP je besedilo, grep obdela binarno datoteko, kot da bi bila besedilo; to je enakovredno -do možnost. Opozorilo: grep --binary-files = besedilo lahko izpiše binarne smeti, ki imajo lahko neprijetne stranske učinke, če je izhod terminal in če gonilnik terminala nekatere od njih interpretira kot ukaze.
-D AKCIJA ,
--devices = AKCIJA
Če je vhodna datoteka naprava, FIFO ali vtičnica, uporabite AKCIJA za obdelavo. Privzeto, AKCIJA je preberite , kar pomeni, da se naprave berejo kot običajne datoteke. Če AKCIJA je preskoči , naprave se tiho preskočijo.
-d AKCIJA ,
--direktorij = AKCIJA
Če je vhodna datoteka imenik , uporaba AKCIJA za obdelavo. Privzeto, AKCIJA je preberite , torej berete imenike, kot da gre za običajne datoteke. Če AKCIJA je preskoči , tiho preskoči imenike. Če AKCIJA je ponoviti , preberite vse datoteke v vsakem imeniku, rekurzivno , sledi simbolne povezave samo če so v ukazni vrstici. To je enakovredno -r možnost.
--exclude = GLOBE Preskoči datoteke, katerih osnovno ime se ujema GLOBE (z uporabo nadomestni znak ujemanje). Glob z imenom datoteke lahko uporablja * , ? , in [...] kot nadomestne znake in da dobesedno citiram nadomestni znak ali poševnico.
--exclude-from = MAPA Preskočite datoteke, katerih osnovno ime se ujema s katerim koli globokom imena datoteke, s katerega se bere MAPA (z uporabo nadomestnih znakov, kot je opisano pod - izključi ).
--exclude-dir = TEBI Iz rekurzivnega iskanja izključite imenike, ki se ujemajo z vzorcem DIR.
-JAZ Binarno datoteko obdelajte, kot da ne vsebuje ujemajočih se podatkov; to je enakovredno --binary-files = brez ujemanja možnost.
--include = GLOBE Iščite samo datoteke, katerih osnovno ime se ujema GLOBE (z uporabo nadomestnih znakov, kot je opisano pod - izključi ).
-r , - rekurzivno Preberite vse datoteke v vsakem imeniku, rekurzivno, po simboličnih povezavah samo, če so v ukazni vrstici. To je enakovredno -d ponovitev možnost.
-R ,
--dereference-rekurzivno
Preberite vse datoteke v vsakem imeniku, rekurzivno. Za razliko od sledite vsem simbolnim povezavam -r .

Druge možnosti

- line-buffed Na izhodu uporabite medpomnjenje vrstic. To lahko povzroči kazen za uspešnost.
--mmap Če je mogoče, uporabite mmap sistemski klic za branje vnosa namesto privzetega preberite sistemski klic. V nekaterih situacijah --mmap prinaša boljše rezultate. Vendar --mmap lahko povzroči nedefinirano vedenje (vključno z izpusti jedra), če se vhodna datoteka med tem skrči oprijem deluje ali če pride do napake V / I.
-U , --binarni Datoteke obravnavajte kot binarne. Privzeto v MS-DOS in MS-Windows oprijem ugane vrsto datoteke z ogledom vsebine prvih 32 KB branje iz datoteke. Če oprijem odloči, da je datoteka besedilna datoteka, črta znake CR iz prvotne vsebine datoteke (za oblikovanje regularnih izrazov z ^ in $ pravilno delo). Določanje -U preglasi to ugibanje, zaradi česar se vse datoteke dobesedno preberejo in posredujejo mehanizmu za ujemanje; če je datoteka besedilna datoteka s pari CR / LF na koncu vsake vrstice, to povzroči, da nekateri regularni izrazi ne uspejo. Ta možnost ne vpliva na platforme, razen MS-DOS in MS-Windows.
-s , --null-data Vhod obravnavajte kot niz vrstic, ki se namesto z novo vrstico zaključi z ničelnim bajtom (znakom ASCII NUL). Kot -Z ali --nič možnost, lahko to možnost uporabite z ukazi, kot je razvrsti -s za obdelavo poljubnih imen datotek.

Regularni izrazi

Regularni izraz je vzorec, ki opisuje niz nizov. Regularni izrazi so zgrajeni analogno aritmetičnim izrazom z uporabo različnih operatorjev za kombiniranje manjših izrazov.

oprijem razume tri različne različice sintakse regularnih izrazov: 'osnovna' (BRE), 'razširjena' (ERE) in 'perl' (PRCE). V GNU oprijem , ni razlike v razpoložljivi funkcionalnosti med osnovno in razširjeno sintakso. V drugih izvedbah so osnovni regularni izrazi manj zmogljivi. Naslednji opis velja za razširjene regularne izraze; razlike za osnovne regularne izraze so povzete v nadaljevanju. Perl regularni izrazi dajejo dodatno funkcionalnost.

Temeljni gradniki so regularni izrazi, ki se ujemajo z enim samim znakom. Večina znakov, vključno z vsemi črkami in številkami, je regularnih izrazov, ki se ujemajo sami s seboj. Kateri koli metaznak s posebnim pomenom se lahko navede, tako da se mu naredi poševnica nazaj.

Obdobje ( . ) se ujema s katerim koli znakom.

Razredi znakov in izrazi v oklepajih

TO izraz oklepaja je seznam znakov, ki ga zapira [ in ] . Ujema se s katerim koli znakom na seznamu; če je prvi znak na seznamu karata ^ potem se ujema s katerim koli znakom, ki ni na seznamu. Na primer regularni izraz [0123456789] se ujema s katero koli enomestno številko.

Znotraj izraza v oklepaju: a izraz obsega je sestavljen iz dveh znakov, ločenih z vezajem. Ujema se s katerim koli posameznim znakom, ki razvršča med temi dvema znakoma, vključno z uporabo zaporedja zaporedja in nabora znakov. Na primer, v privzeti področni nastavitvi C [a-d] je enakovredno [abcd] . Veliko jezikovnih vrst razvršča znake v vrstnem redu slovarjev in v teh jezikovnih nastavitvah [a-d] pogosto ni enakovredno [abcd] ; lahko je enakovredno [aBbCcDd] , na primer. Če želite pridobiti tradicionalno razlago izrazov oklepajev, lahko uporabite jezik C z nastavitvijo LC_ALL spremenljivka okolja na vrednost C .

Končno so nekateri poimenovani razredi znakov vnaprej definirani znotraj izrazov oklepajev, kot sledi. Njihova imena so samoumevna in tudi so [: Zajemanje] , [: alfa:] , [: cntrl:] , [: številka:] , [: graf:] , [: nižje:] , [: tisk:] , [:točka:] , [: presledek:] , [: zgornji:] , in [: Xdigit] . Na primer [[Charon]] pomeni razred znakov številk in črk v trenutnem jeziku. V lokalnem jeziku C in kodiranju nabora znakov ASCII je to enako kot [0-9A-do-z] . (Upoštevajte, da so oklepaji v teh imenih razredov del simboličnih imen in jih je treba vključiti poleg oklepajev, ki omejujejo izraz oklepajev.) Večina metaznakov izgubi svoj poseben pomen znotraj izrazov oklepajev. Vključiti dobesedno ] uvrstite ga na prvo mesto na seznamu. Podobno vključiti dobesedno besedilo ^ postavite kamor koli, ne najprej. Končno, da vključi dobesedno besedilo - , postavi ga nazadnje.

Sidranje

Kareta ^ in znak za dolar $ so metaznaki, ki se ujemajo s praznim nizom na začetku in koncu vrstice.

Znak povratne poševnice in posebni izrazi

Simboli < in > oziroma se ujemata s praznim nizom na začetku in koncu besede. Simbol b se ujema s praznim nizom na robu besede in B se ujema s praznim nizom, če ni na robu besede. Simbol in je sinonim za [_ [, Zajem]] in IN je sinonim za [^ [: Dojem]] .

Ponovitev

Regularnemu izrazu lahko sledi eden od več operaterjev ponavljanja:

? Prejšnja postavka je neobvezna in se ujema največ enkrat.
* Prejšnji element se bo ujemal nič ali večkrat.
+ Prejšnja postavka se bo ujemala enkrat ali večkrat.
{ n } Prejšnji element se natančno ujema n krat.
{ n ,} Prejšnji element se ujema n ali večkrat.
{ n , m } Prejšnji element se ujema vsaj n krat, vendar ne več kot m krat.

Združevanje

Lahko sta dva regularna izraza združeno ; dobljeni regularni izraz se ujema s katerim koli nizom, tvorjenim s povezovanjem dveh podnizov, ki se ujemata s povezanimi izrazi.

Alternacija

Operator infiks lahko združi dva regularna izraza | ; dobljeni regularni izraz se ujema s katerim koli nizom, ki se ujema z nadomestnim izrazom.

Prednost

Ponavljanje ima prednost pred združevanjem, ki ima prednost pred izmenjavanjem. Celoten izraz je lahko zaprt v oklepajih, da preglasi ta pravila prednosti in tvori podizraz.

Povratne reference in podizrazi

Povratna referenca n , kje n je enomestna, se ujema s podnizom, ki se je prej ujemalo z n th v oklepajih podizraz regularnega izraza.

odprite datoteko xls brez excela

Osnovni in razširjeni regularni izrazi

V osnovnih regularnih izrazih metaznaki ? , + , { , | , ( , in ) izgubijo svoj poseben pomen; namesto tega uporabite različice s poševnico ? , + , { , | , ( , in ) .

Tradicionalne različice egrep ni podprl { metaznak in nekaj egrep podpora izvedbam { namesto tega se prenosnim skriptom izogibajte { v grep -E vzorce in bi morali uporabljati [{] da se ujema z dobesednim { .

GNU grep -E poskuša podpreti tradicionalno rabo s predpostavko, da { ni poseben, če bi bil začetek neveljavne specifikacije intervala. Na primer ukaz grep -E '{1' išče dvoznakovni niz {1 namesto poročanja o sintaksni napaki v regularnem izrazu. POSIX to vedenje dovoljuje kot razširitev, a prenosni skripti naj se temu izogibajo.

Spremenljivke okolja

Obnašanje oprijem vplivajo naslednje spremenljivke okolja.

Področje za kategorijo LC_foo je določen s pregledom treh spremenljivk okolja LC_ALL , LC_foo , in LANG , v tem vrstnem redu. Prva od teh spremenljivk, ki je nastavljena, določa jezik. Na primer, če LC_ALL ni nastavljen, vendar LC_MESSAGES je nastavljeno na pt_BR , potem se za. uporablja brazilski portugalski jezik LC_MESSAGES kategoriji. The C področne nastavitve se uporabljajo, če ni nastavljena nobena od teh spremenljivk okolja, če katalog področne nastavitve ni nameščen ali če oprijem ni bil sestavljen z nacionalno jezikovno podporo (NLS).

Druge opombe:

GREP_OPTIONS Ta spremenljivka določa privzete možnosti, ki jih je treba postaviti pred vse izrecne možnosti. Na primer, če GREP_OPTIONS je ' --binarne- datoteke = brez ujemanja --direktoriji = preskoči ', oprijem se obnaša, kot da sta dve možnosti --binary-files = brez ujemanja in --direktorij = preskoči je bila določena pred kakršnimi koli eksplicitnimi možnostmi. Specifikacije možnosti so ločene z presledek . Naslednja črka uhaja poševnici nazaj, zato lahko poda možnost, ki vsebuje presledek ali poševnico nazaj.
GREP_COLOR Ta spremenljivka določa barvo, ki se uporablja za poudarjanje ujemajočega se (ne praznega) besedila. Zastarelo je v korist GREP_COLORS , vendar še vedno podprta. The mt , gospa , in mc zmogljivosti GREP_COLORS imajo prednost pred njim. Določi lahko samo barvo, ki se uporablja za označevanje ujemajočega se praznega besedila v kateri koli ujemajoči se vrstici (izbrana vrstica, ko je -v možnost ukazne vrstice je izpuščena ali vrstica konteksta, ko -v je določeno). Privzeto je 01; 31 , kar pomeni krepko rdeče besedilo v ospredju na privzetem ozadju terminala.
GREP_COLORS Določa barve in druge atribute, ki se uporabljajo za poudarjanje različnih delov izhoda. Njegova vrednost je privzeto ločen od dvopičja seznam zmožnosti ms = 01; 31: mc = 01; 31: sl =: cx =: fn = 35: ln = 32: bn = 32: se = 36 z rv in Rojen logične zmogljivosti so izpuščene (tj. napačno ). Podprte zmogljivosti so naslednje:

sl = Podniz SGR za celotne izbrane vrstice (tj. Ujemajoče se vrstice, ko je -v možnost ukazne vrstice je izpuščena ali vrstice, ki se ne ujemajo -v je določeno). Če pa boolean rv zmogljivosti in -v Možnosti ukazne vrstice sta navedeni, namesto tega velja za vrstice za ujemanje konteksta. Privzeta vrednost je prazna (tj. Privzeti barvni par terminala).
cx = Podniz SGR za celotne vrstice konteksta (tj. Neskladne vrstice, ko je -v možnost ukazne vrstice je izpuščena ali ujemajoče se vrstice kadar -v je določeno). Če pa boolean rv zmogljivosti in -v Navedeni sta možnost ukazne vrstice, namesto tega velja za izbrane neujemajoče vrstice. Privzeta vrednost je prazna (tj. Privzeti barvni par terminala).
rv Logična vrednost, ki obrne (zamenja) pomene sl = in cx = zmogljivosti, ko -v Določena je možnost ukazne vrstice. Privzeto je napačno (tj. sposobnost je izpuščena).
mt = 01; 31 Podniz SGR za ujemanje praznega besedila v kateri koli ujemajoči se vrstici (tj. Izbrani vrstici, ko je -v možnost ukazne vrstice je izpuščena ali vrstica konteksta, ko -v je določeno). Nastavitev tega je enakovredna nastavitvi obeh ms = in mc = hkrati na isto vrednost. Privzeto je krepko rdeče besedilo v ospredju nad trenutnim ozadjem vrstice.
ms = 01; 31 Podniz SGR za ujemanje praznega besedila v izbrani vrstici. (To se uporablja samo, če je -v možnost ukazne vrstice je izpuščena.) Učinek sl = (ali cx = če rv ), ko se to začne, ostane aktivna. Privzeto je krepko rdeče besedilo v ospredju nad trenutnim ozadjem vrstice.
mc = 01; 31 Podniz SGR za ujemanje praznega besedila v kontekstni vrstici. (To se uporablja samo, če je -v določena je možnost ukazne vrstice.) Učinek cx = (ali sl = če rv ), ko se to začne, ostane aktivna. Privzeto je krepko rdeče besedilo v ospredju nad trenutnim ozadjem vrstice.
fn = 35 Podniz SGR za imena datotek pred katero koli vrstico vsebine. Privzeto je ospredje škrlatnega besedila nad privzetim ozadjem terminala.
ln = 32 Podniz SGR za številke vrstic, pred katero koli vrstico vsebine. Privzeto je zeleno besedilo v ospredju nad privzetim ozadjem terminala.
bn = 32 Podniz SGR za odmike bajtov pred katero koli vrstico vsebine. Privzeto je zeleno besedilo v ospredju nad privzetim ozadjem terminala.
se = 36 Podniz SGR za ločila, ki so vstavljena med izbrana polja vrstic ( : ), med polji vrstice konteksta, ( - ) in med skupinami sosednjih vrstic, če je podan ničelni kontekst ( - ). Privzeto je ospredje cianovega besedila nad privzetim ozadjem terminala.
Rojen Logična vrednost, ki preprečuje čiščenje do konca vrstice Izbriši v vrstici ( THE ) v desno ( 33 [K ) vsakič, ko se barvani element konča. To je potrebno na terminalih, na katerih EL ni podprt. Sicer je koristno na terminalih, za katere je back_color_erase ( bce ) logična sposobnost terminfo ne velja, če izbrane barve poudarkov ne vplivajo na ozadje ali če je EL prepočasen ali povzroči preveč utripanja. Privzeta vrednost je false (tj. Zmožnost je izpuščena).

Upoštevajte, da logične lastnosti nimajo = ... del. Izpuščeni so (tj. napačno ) privzeto in postane prav kadar je določeno.

Glejte razdelek Izberite grafično izvedbo (SGR) v dokumentaciji besedilnega terminala, ki se uporablja za dovoljene vrednosti in njihov pomen kot atribute znakov. Te vrednosti podnizov so cela števila v decimalni predstavitvi in ​​jih je mogoče združiti s podpičji. oprijem skrbi za sestavljanje rezultata v popolno zaporedje SGR ( 33 [ ... m ). Skupne vrednosti za združitev vključujejo 1. za krepko, 4. za podčrtaj, 5. za utripanje, 7. za inverzno, 39 za privzeto barvo ospredja, 30. do 37 za barve v ospredju, 90 do 97 za 16-barvne barve v ospredju, 38,5,0 do 38,5.255 za 88-barvni in 256-barvni način barv v ospredju, 49 za privzeto barvo ozadja, 40 do 47 za barve ozadja, 100 do 107 za barve ozadja v 16-barvnem načinu in 48,5,0 do 48; 5; 255 za 88-barvni in 256-barvni način ozadja.
LC_ALL , LC_COLLATE , LANG Te spremenljivke določajo jezik za LC_COLLATE kategorija, ki določa zaporedje primerjanja, ki se uporablja za razlago izrazov obsega, kot je [a-z] .
LC_ALL , LC_CTYPE , LANG Te spremenljivke določajo jezik za LC_CTYPE kategorija, ki določa vrsto znakov, npr. kateri znaki so presledki.
LC_ALL , LC_MESSAGES , LANG Te spremenljivke določajo jezik za LC_MESSAGES kategorija, ki določa jezik, ki ga grep uporablja za sporočila. Privzeto C locale uporablja sporočila ameriške angleščine.
POSIXLY_CORRECT Če je nastavljeno, oprijem obnaša se, kot zahteva POSIX; drugače, oprijem vede bolj kot drugi programi GNU. POSIX zahteva, da je treba možnosti, ki sledijo imenom datotek, obravnavati kot imena datotek; take možnosti so privzeto premeščene na sprednjo stran operandnega seznama in so obravnavane kot možnosti. Poleg tega POSIX zahteva, da se neprepoznane možnosti diagnosticirajo kot „nezakonite“, ker pa v resnici niso v nasprotju z zakoni, je privzeto, da jih diagnosticirajo kot „neveljavne“. POSIXLY_CORRECT tudi onemogoči _N_GNU_nonoption_argv_flags_ , opisano spodaj.
_N_GNU_nonoption_argv_flags_ (Tukaj N je oprijem ID številčnega procesa). Če je jaz Znak te spremenljivke okolja je 1. , ne upoštevajte jaz peti operand iz oprijem možnost, tudi če se zdi, da je ena. Lupina lahko to spremenljivko postavi v okolje za vsak ukaz, ki ga zažene, pri čemer določi, kateri operandi so rezultat razširitve nadomestnega imena datoteke in jih zato ne bi smeli obravnavati kot možnosti. To vedenje je na voljo samo s knjižnico GNU C in samo kadar POSIXLY_CORRECT ni nastavljeno.

Stanje izhoda

Izhodno stanje je 0 če so najdene izbrane vrstice, in 1. če ni najdeno. Če je prišlo do napake, je stanje izhoda dva .

Primeri

Nasvet



Če še niste videli našega primer uporabe predlagamo, da ga najprej pregledate.

grep chope /etc/passwd

Iskanje / etc / passwd za uporabnika Točeno pivo .

grep 'May 31 03' /etc/httpd/logs/error_log

V datoteki error_log Apache poiščite morebitne vnose napake, ki so se zgodili 31. maja ob 3 zjutraj. Z dodajanjem narekovajev okoli niza to omogoča, da v iskalno grep postavite presledke.

grep -r 'computerhope' /www/

Rekurzivno poiščite imenik / www / in vsi podimeniki za vse vrstice datotek, ki vsebujejo niz ' računalniška upanja '.

grep -w 'hope' myfile.txt

Poiščite datoteko myfile.txt za vrstice, ki vsebujejo besedo ' upanje '. Ujemajo se samo vrstice, ki vsebujejo ločeno besedo 'upanje'. Vrstice, kjer je 'upanje' del besede (npr. 'upanja') so ne se ujemajo.

grep -cw 'hope' myfile.txt

Enako kot prejšnji ukaz, vendar prikazuje število ujetih vrstic in ne ujemajočih se vrstic.

kako odpreti vrata na usmerjevalniku
grep -cvw 'hope' myfile.txt

Inverzno prejšnjemu ukazu: prikaže število vrstic v myfile.txt ki to počnejo ne vsebujejo besedo 'upanje'.

grep -l 'hope' /www/*

Prikaže imena datotek (ne pa tudi ustreznih vrstic) vseh datotek v / www / (ne pa tudi podimenikov), katerih vsebina vključuje niz ' upanje '.

izd - Preprost urejevalnik besedil.
egrep - Filtrirajte besedilo, ki se ujema z razširjenim regularnim izrazom.
in - Pripomoček za filtriranje in pretvorbo besedila.
sh - interpreter ukazov lupine Bourne.