Vai iepriekš esat lietojis grep? Lielāko daļu laika galvenais grep triks var paveikt lielāko daļu darba. Tomēr grep piedāvā daudz veidu, kā veikt meklēšanu un precīzi noregulēt izvadi uz vairāk izmantojamu versiju. Šajā rakstā apskatīsim grep komandas lietojumu.
Grep lietojums
Eksistences pārbaude
Ja jūs izmantojat jebkāda veida Linux izplatīšanu, jums jau ir instalēts grep. Palaidiet šādu komandu terminālā.
grep --versija
Šo komandu izmanto, lai parādītu pašreiz instalētā grep versiju. Tagad mums ir nepieciešams demonstrācijas fails. Manā gadījumā es ģenerēšu teksta failu, kas ietver visas manā sistēmā instalētās pakotnes.
Pamati
Grep pamata lietošanai ir šāda struktūra.
grepVai, lai vieglāk saprastu, izmantojiet šo.
grepŠajā gadījumā grep veiks meklēšanu failā un izdrukās visas līnijas, kurās iekļauts modelis (meklēšanas vienums).
grep python ~ / Desktop / PackageList.txt
Greps meklēja failu “PackageList.txt ”Es ģenerēju agrāk un izdrukāju visas rindas, kurās ir“ python ”.
Šo pašu darbību var veikt citā veidā. Pārbaudiet šo piemēru.
kaķis ~ / Desktop / PackageList.txt | grep pitons
Izmantojot komandu “cat”, es nosūtīju faila “PackageList.txt ”grepēt. Izmantojot kaķa izvadi, grep veica meklēšanu un izdrukāja līnijas, kurās ir meklēšanas vienums.
Tagad nāk jautra lieta. Jūs varat burtiski sakraut vairākas grep komandas tāpat.
kaķis ~ / Desktop / PackageList.txt | grep - | grep p | grep pitons
Pirmais grep filtrē līdz līnijām ar defisi, otrais filtrē līdz līnijām ar p un pēdējais grep filtrē līdz līnijām ar pitonu. Ir jēga?
Reģistrjutība
Veicot meklēšanu, galvenais jautājums ir reģistrjutīgums. Pēc noklusējuma grep ir reģistrjutīgs.
Piemēram, meklējot vaicājumu “Python”, netiks rādīti rezultāti.
kaķis ~ / Desktop / PackageList.txt | grep Python
Lai padarītu grep burtu “nejutīgu”, pievienojiet šādu opciju.
kaķis ~ / Desktop / PackageList.txt | grep -i Python
Failu meklēšana
Pieņemsim, ka jums ir direktorijs ar daudziem teksta failiem. Jūsu mērķis ir identificēt failu (-us), kurā ir vai nav raksta (meklēšanas vienums).
Šī metode man šķiet ļoti noderīga, meklējot žurnālfailu kaudzē. Tā kā man nav laika katru failu atvērt un pārbaudīt manuāli, man ir jāgrepē, lai veiktu darbu man.
Lai uzskaitītu failus, kas satur spēli, izmantojiet karodziņu “-l”.
grep -l
Kā liecina rezultāts, termins “python” ir sastopams visos 3 direktorijā “Desktop” esošajos failos.
Lai ierakstītu failus bez atbilstības, izmantojiet karodziņu “-L”.
grep -L
"Nav sakritības.txt ”ir vienīgais fails, kurā nav vārda“ python ”.
Apgriezta meklēšana
Pēc noklusējuma grep ir drukāt tikai līnijas ar atbilstošu rakstu, pa labi? Ir pienācis laiks mainīt procesu. Šoreiz mēs drukāsim tikai līnijas BEZ atbilstošā parauga.
Vienkārši nododiet opciju “-v”, lai grepētu.
kaķis ~ / Desktop / PackageList.txt | grep -i -v Python
Līniju drukāšana pirms / pēc spēles
Pēc noklusējuma grep drukās tikai līniju, kas atbilst meklēšanas modelim. Izmantojot šo paņēmienu, jūs varat pateikt grepam izdrukāt līnijas arī pirms / pēc spēles.
Lai drukātu līnijas pirms spēles, izmantojiet šādu struktūru.
grep -B
Šeit 5 ir skaitļa rindiņa, kuru grep drukās PIRMS atbilstošās rindas.
Līniju drukāšanai pēc spēles izmantojiet šo.
grep -A
Kā būtu ar drukāšanu gan pirms, gan pēc atbilstošās rindas? Tādā gadījumā izmantojiet karodziņu “-C”.
grep -C
Līnijas numurs
Kad grep parāda izvadi, rindas numurs nav minēts. Saistītajam (-iem) līnijas numuram (-iem) izmantojiet karodziņu “-n”.
grep -n
Viens vārds
Ja tiek izmantots karodziņš “-w”, grep traktēs modeli kā veselu vārdu.
grep -w
Grep meklēšanas ierobežošana
Grep ļauj norādīt failā meklējamo rindu skaitu. Šī metode ir noderīga, ja jums ir darīšana ar lielu failu (piemēram, sistēmas žurnālu). Izmantojiet karodziņu “-m”.
grep -m
Rekursīvā meklēšana
Tā ir viena no visnoderīgākajām funkcijām, ko grep piedāvā lielai lietošanai. Greps var rekursīvi meklēt direktorijā un atrast visas atbilstības no visiem failiem, ar kuriem tā saskaras.
grep -ROr,
grep -r
Es bieži atrodu šo rekursīvo funkciju lietošanu kopā ar “-l” karodziņu.
Klusais režīms
Grep var palaist “klusā” režīmā. Kad darbojas “klusā” režīmā, grep neizdrukā nevienu izvadi uz terminālu. Tā vietā tiks atgriezta vērtība 0 (vismaz tika atrasta atbilstība) vai 1 (atbilstība netika atrasta).
grep -qatbalss $?
Regex
Greps pieļauj arī regulārās izteiksmes (regulārās izteiksmes) meklēšanu. Tas papildina pilnīgi jaunu grep kā meklēšanas rīka sarežģītību un lietojamību.
Piemēram, jūs varat izmantot iekavas, lai vienlaikus meklētu gan “too”, gan “two”.
kaķis ~ / Desktop / gpl-3.0.txt | grep t [wo] o
Šis nākamais piemērs drukās līniju tikai tad, ja sakritība notiek pašā līnijas sākumā.
grep ^ GNU ~ / Desktop / gpl-3.0.txt
Attiecībā uz beigu saskaņošanu izmantojiet šo.
grep you $ ~ / Desktop / gpl-3.0.txt
Ja vēlaties izmantot Perl regulāro izteiksmi, izmantojiet karodziņu “-P”. Tas izturēsies pret modeli kā Perl regex.
grep -PPēdējās domas
Grep piedāvā daudz veidu, kā pielāgot meklēšanas funkciju. Regex pieejamība paver pilnīgi jaunu horizontu potenciālajam grep lietojumam. Foršākais ir tas, ka jūs varat izmantot gan vispārējo, gan Perl regex; ar kuru jūs jūtaties ērti.
Lai iegūtu detalizētāku skaidrojumu, vienmēr skatiet rokasgrāmatu Man.
cilvēks grep
Priekā!