Ste že uporabljali grep? Večino časa lahko osnovni grep trik opravi večino dela. Vendar grep ponuja veliko načinov za iskanje in natančnejšo nastavitev izhoda na uporabnejšo različico. V tem članku si oglejmo uporabo ukaza grep.
Uporaba grepa
Preverjanje obstoja
Če uporabljate kakršno koli distribucijo Linuxa, ste že namestili grep. V terminalu zaženite naslednji ukaz.
grep --verzija
Ta ukaz se uporablja za prikaz različice trenutno nameščenega grepa. Zdaj potrebujemo predstavitveno datoteko. V mojem primeru bom ustvaril besedilno datoteko, ki vključuje vse nameščene pakete v mojem sistemu.
Osnove
Osnovna uporaba grepa sledi naslednji strukturi.
grepAli pa za lažje razumevanje uporabite tega.
grepV tem primeru bo grep izvedel iskanje v datoteki in natisnil vse vrstice, ki vključujejo vzorec (iskalni izraz).
grep python ~ / Desktop / PackageList.txt
Grep je iskal datoteko “PackageList.txt "Sem ustvaril prej in natisnil vse vrstice, ki vključujejo" python ".
To isto operacijo lahko izvedemo na drug način. Oglejte si naslednji primer.
mačka ~ / namizje / seznam paketov.txt | grep python
Tu sem z ukazom “cat” poslal vsebino datoteke “PackageList.txt "v grep. Z izhodom mačke je grep izvedel iskanje in natisnil vrstice, ki vsebujejo iskalni izraz.
Zdaj prihaja zabavna stvar. Več ukazov grep lahko dobesedno zložite kar tako.
mačka ~ / namizje / seznam paketov.txt | grep - | grep p | grep python
Prvi grep filtrira do vrstic z vezajem, drugi filtrira do vrstic z p, končni grep pa do vrstic z pythonom. Smiselno?
Čutnost velikih in malih črk
Pri iskanju je glavno vprašanje občutljivost na velike in male črke. Privzeto grep razlikuje med velikimi in malimi črkami.
Na primer, iskanje »Python« ne bo pokazalo nobenega rezultata.
mačka ~ / namizje / seznam paketov.txt | grep Python
Če želite, da grep ne bo občutljiv na velike in male črke, dodajte naslednjo možnost.
mačka ~ / namizje / seznam paketov.txt | grep -i Python
Iskanje datotek
Recimo, da imate imenik s številnimi besedilnimi datotekami. Vaš cilj je prepoznati datoteke, ki vsebujejo ali ne vsebujejo vzorca (iskalni izraz).
Ta metoda se mi zdi zelo koristna pri iskanju po kopici dnevniških datotek. Ker nimam časa, da bi vsako datoteko ročno odprl in preveril, imam za to nalogo grep.
Za navajanje datotek, ki vsebujejo ujemanje, uporabite zastavico -l.
grep -l
Kot kaže rezultat, je izraz "python" prisoten v vseh 3 datotekah v imeniku "Desktop".
Za uvrstitev datotek brez ujemanja uporabite zastavico “-L”.
grep -L
"Ni ujemanj.txt "je edina datoteka, ki ne vsebuje izraza" python ".
Obrnjeno iskanje
Privzeto vedenje grepa je tiskanje samo vrstic z ustreznim vzorcem, desno? Čas je, da postopek obrnemo nazaj. Tokrat bomo tiskali samo vrstice BREZ ujemajočega se vzorca.
Preprosto podajte možnost "-v" za grep.
mačka ~ / namizje / seznam paketov.txt | grep -i -v Python
Tiskanje vrstic pred / po tekmi
Privzeto grep natisne samo vrstico, ki ustreza iskalnemu vzorcu. S to tehniko lahko naročite grep, naj natisne vrstice tudi pred / po tekmi.
Za tiskanje vrstic pred tekmo uporabite naslednjo strukturo.
grep -B
Tu je 5 številčna vrstica, ki jo bo grep natisnil PRED ujemajočo se vrstico.
Za tiskanje vrstic po tekmi uporabite naslednjo.
grep -A
Kaj pa tiskanje pred in po ujemajoči se vrstici? V tem primeru uporabite zastavico “-C”.
grep -C
Številka vrstice
Ko grep prikaže izhod, ne omenja številke vrstice. Za povezane številke vrstic uporabite zastavico “-n”.
grep -n
Ena beseda
Če je uporabljena zastavica “-w”, bo grep vzorec obravnaval kot celo besedo.
grep -w
Omejitev grep iskanja
Grep omogoča določanje števila vrstic za iskanje v datoteki. Ta metoda je uporabna, če imate veliko datoteko (na primer sistemski dnevnik). Uporabite zastavico “-m”.
grep -m
Rekurzivno iskanje
To je ena najbolj uporabnih funkcij, ki jih grep ponuja za veliko uporabo. Grep lahko rekurzivno preišče imenik in poišče vsa ujemanja vseh datotek, s katerimi se sooča.
grep -RAli,
grep -r
Pogosto najdem uporabo te rekurzivne funkcije skupaj z zastavico -l.
Tihi način
Grep lahko zaženete v "tihem" načinu. Ko gre v tihem načinu, grep ne bo natisnil nobenega izhoda na terminal. Namesto tega bo vrnil 0 (vsaj je bilo najdeno ujemanje) ali 1 (ni najdenega ujemanja).
grep -qecho $?
Regex
Grep omogoča tudi iskanje po regularnih izrazih (regularni izraz). To doda povsem novo stopnjo zapletenosti in uporabnosti grepa kot orodja za iskanje.
Na primer, lahko uporabite oklepaje za iskanje hkrati »preveč« in »dva«.
mačka ~ / namizje / gpl-3.0.txt | grep t [wo] o
Ta naslednji primer bo vrstico natisnil le, če se ujemanje zgodi na samem začetku vrstice.
grep ^ GNU ~ / Desktop / gpl-3.0.txt
Kar zadeva ujemanje konca, uporabite tega.
grep vam $ ~ / Desktop / gpl-3.0.txt
Če želite uporabiti regularni izraz Perl, uporabite zastavico “-P”. Vzorec bo obravnaval kot regularni izraz Perl.
grep -PZadnje misli
Grep ponuja številne načine za prilagajanje funkcije iskanja. Razpoložljivost regularnega izraza odpira povsem novo obzorje za potencialno uporabo grepa. Kul stvar je, da lahko uporabite tako splošne kot Perl-ove regularne izraze; karkoli se vam zdi prijetno.
Za najbolj podrobno razlago se vedno obrnite na stran z navodili.
človek grep
Na zdravje!