20 Eżempji Utli ta' Kmand Egrep fil-Linux


Qosor: F'din il-gwida, se niddiskutu xi wħud mill-eżempji prattiċi tal-kmand egrep. Wara li jsegwu din il-gwida, l-utenti jkunu jistgħu jwettqu t-tiftix tat-test b'mod aktar effiċjenti fil-Linux.

Qatt ġejt frustrat għax ma tistax issib l-informazzjoni meħtieġa fir-zkuk? L-estrazzjoni tal-informazzjoni meħtieġa minn sett kbir tad-dejta hija biċċa xogħol kumplessa u li tieħu ħafna ħin.

L-affarijiet isiru verament ta 'sfida jekk is-sistema operattiva ma tipprovdix l-għodda t-tajba u hawn jiġi Linux biex isalvak. Linux jipprovdi diversi utilitajiet li jiffiltraw it-test bħal sed, cut, eċċ.

Madankollu, egrep hija waħda mill-utilitajiet l-aktar qawwija u komunement użati għall-ipproċessar tat-test fil-Linux, u aħna se niddiskutu xi eżempji tal-kmand egrep.

Il-kmand egrep fil-Linux huwa rikonoxxut mill-familja tal-kmand grep, li jintuża għat-tiftix u t-tqabbil ta 'mudell partikolari fil-fajls. Taħdem bl-istess mod għal grep -E (grep Extended regex), iżda l-aktar tfittex fajl partikolari jew saħansitra linji biex tinlinja jew tipprintja l-linja fil-fajl mogħti.

Is-sintassi tal-kmand egrep hija kif ġej:

$ egrep [OPTIONS] PATTERNS [FILES]

Ejja noħolqu kampjun ta' fajl ta' test bil-kontenut li ġej biex nuża eżempju:

$ cat sample.txt

Hawnhekk, nistgħu naraw li l-fajl tat-test huwa lest. Issa ejja niddiskutu ftit eżempji komuni li jistgħu jintużaw kuljum.

Nibdew b'eżempju sempliċi ta' tqabbil tal-mudelli, fejn nistgħu nużaw il-kmand ta' hawn taħt biex infittxu string professjonali f'fajl sample.txt:

$ egrep professionals sample.txt

Hawnhekk, nistgħu naraw li l-kmand jistampa l-linja li fiha l-mudell speċifikat.

Nistgħu nagħmlu l-output aktar informattiv billi nenfasizzaw il-mudell imqabbel. Biex niksbu dan, nistgħu nużaw l-għażla --color tal-kmand egrep. Pereżempju, il-kmand ta' hawn taħt se jenfasizza t-test professjonisti b'kulur aħmar:

$ egrep --color=auto professionals sample.txt

Hawnhekk, nistgħu naraw li l-istess output huwa aktar informattiv meta mqabbel ma 'dak ta' qabel. Ukoll, nistgħu nidentifikaw faċilment li l-kelma professjonisti hija ripetuta darbtejn.

Fuq il-biċċa l-kbira tas-sistemi Linux l-issettjar ta 'hawn fuq huwa attivat awtomatikament bl-użu tal-psewdonomi li ġej:

$ alias egrep='egrep –color=auto'

Il-kmand egrep jaċċetta fajls multipli bħala argument, li jippermettilna nfittxu mudell partikolari f'fajls multipli. Ejja nifhmu dan b'eżempju.

L-ewwel, oħloq kopja tal-fajl sample.txt:

$ cp sample.txt sample-copy.txt

Issa, fittex il-mudell professjonisti fiż-żewġ fajls:

$ egrep professionals sample.txt sample-copy.txt 

Fl-eżempju ta 'hawn fuq, nistgħu naraw l-isem tal-fajl fl-output, li jirrappreżenta l-linja mqabbla minn dak il-fajl.

Kultant irridu biss insibu jekk il-mudell huwiex preżenti jew le fil-fajl. Jekk iva allura f'kemm linji preżenti tagħha? F'każijiet bħal dawn, nistgħu nużaw l-għażla -c tal-kmand.

Per eżempju, il-kmand ta 'hawn taħt se juri 1 bħala output minħabba li l-kelma professjonisti hija preżenti f'linja waħda biss.

$ egrep -c professionals sample.txt

1

Fl-eżempju preċedenti, rajna li l-għażla -c ma tgħoddx in-numru ta 'okkorrenzi tal-mudell. Pereżempju, il-kelma professjonisti tidher darbtejn fl-istess linja iżda l-għażla -c tittrattaha bħala taqbila waħda biss.

F'każijiet bħal dawn, nistgħu nużaw l-għażla -o tal-kmand biex tipprintja l-mudell imqabbel biss. Pereżempju, il-kmand ta' hawn taħt se juri l-kelma professjonisti fuq żewġ linji separati:

$ egrep -o professionals sample.txt

Issa, ejja ngħoddu l-linji billi tuża l-kmand wc:

$ egrep -o professionals sample.txt | wc -l

Fl-eżempju ta 'hawn fuq, użajna l-kombinazzjoni ta' kmandi egrep u wc biex tgħodd in-numru ta 'okkorrenzi tal-mudell partikolari.

B'mod awtomatiku, egrep iwettaq tqabbil tal-mudelli b'mod sensittiv għall-każ. Ifisser kliem – aħna, Aħna, aħna, u AĦNA niġu trattati bħala kliem differenti. Madankollu, nistgħu ninfurzaw it-tfittxija mhux sensittiva għall-każi billi tuża l-għażla -i.

Pereżempju, fit-taqbila tal-mudell tal-kmand ta' hawn taħt se tirnexxi għat-test we u Aħna:

$ egrep -i we sample.txt 

Fl-eżempju preċedenti, rajna li l-kmand egrep iwettaq taqbila parzjali. Pereżempju, meta fittxejna t-test aħna imbagħad it-tqabbil tal-mudelli rnexxielna għal testi oħra wkoll. Bħal web, websajt, u kienu.

Biex negħlbu din il-limitazzjoni, nistgħu l-għażla -w, li tinforza t-tqabbil tal-kliem kollu.

$ egrep -w we sample.txt

S'issa, użajna l-kmand egrep biex nipprintjaw il-linji li fihom il-mudell mogħti huwa preżenti. Madankollu, xi kultant irridu nwettqu l-operazzjoni b'mod oppost.

Pereżempju, nistgħu rridu nipprintjaw il-linji li fihom il-mudell mogħti mhuwiex preżenti. Nistgħu niksbu dan bl-għajnuna tal-għażla -v:

$ egrep -v we sample.txt

Hawnhekk, nistgħu naraw li l-kmand jistampa l-linja kollha li ma fihax it-test we.

Nistgħu nużaw l-għażla -n tal-kmand biex nippermettu n-numerazzjoni tal-linja, li turi n-numru tal-linja fl-output meta t-tqabbil tal-mudell jirnexxi. Dan il-trick sempliċi jagħmel l-output aktar sinifikanti.

$ egrep -n professionals sample.txt

Fl-output ta 'hawn fuq, nistgħu naraw li l-kelma professjonisti hija preżenti fil-5 linja.

Fil-modalità kwieta, il-kmand egrep ma jistampax il-mudell imqabbel. Allura rridu nużaw il-valur tar-ritorn tal-kmand biex nidentifikaw jekk it-tqabbil tal-mudell irnexxielux jew le.

Nistgħu nużaw l-għażla -q tal-kmand biex nippermettu l-modalità kwieta, li tkun utli waqt li niktbu skripts tal-qoxra.

$ egrep -q professionals sample.txt
$ egrep -q non-existing-pattern sample.txt

F'dan l-eżempju, il-valur tar-ritorn żero jindika l-preżenza tal-mudell filwaqt li l-valur mhux żero jindika n-nuqqas tal-mudell.

Xi drabi, jagħmel sens li turi ftit linji madwar il-mudell imqabbel. Għal xenarji bħal dawn, nistgħu nużaw l-għażla -B tal-kmand, li juri N linji qabel il-mudell imqabbel.

Pereżempju, il-kmand ta' hawn taħt se jistampa l-linja li għaliha tirnexxi t-taqbila tal-mudell kif ukoll 2 linji qabelha.

$ egrep -B 2 -n professionals sample.txt 

F'dan l-eżempju, użajna l-għażla -n biex nuru n-numri tal-linji.

B'mod simili, nistgħu nużaw l-għażla -A tal-kmand biex turi linji wara t-tqabbil tal-mudell. Pereżempju, il-kmand t'hawn taħt se jistampa l-linja li għaliha tirnexxi l-konkordanza tal-mudell kif ukoll iż-2 linji li jmiss.

$ egrep -A 2 -n professionals sample.txt

Barra minn dan, il-kmand egrep jappoġġja l-għażla -C li tgħaqqad il-funzjonalità tal-għażliet -A u -B, li turi l- linji qabel u wara l-mudell imqabbel.

$ egrep -C 2 -n professionals sample.txt 

Kif diskuss qabel, nistgħu nwettqu tqabbil tal-mudelli fuq fajls multipli. Madankollu, is-sitwazzjoni ssir delikata meta l-fajls ikunu preżenti taħt sotto-direttorji multipli u ngħadduhom kollha bħala argumenti tal-kmand.

F'każijiet bħal dawn, nistgħu nwettqu tqabbil tal-mudelli b'mod rikorsiv billi tuża l-għażla -r kif muri fl-eżempju li ġej.

L-ewwel, oħloq 2 sotto-direttorji u kkopja l-fajl sample.txt fihom:

$ mkdir -p dir1/dir2
$ cp sample.txt dir1/
$ cp sample.txt dir1/dir2/

Issa, ejja nwettqu l-operazzjoni ta 'tfittxija b'mod rikorsiv:

$ egrep -r professionals dir1

Fl-eżempju ta 'hawn fuq, nistgħu naraw li l-logħba tal-mudell irnexxielha għall-fajls dir1/dir2/sample.txt u dir1/sample.txt.

Nistgħu nużaw karattru punt (.) biex jaqbel ma' kwalunkwe karattru wieħed ħlief għat-tmiem tal-linja. Pereżempju, l-espressjoni regolari hawn taħt taqbel mat-test har, hat, u għandha:

$ egrep "ha." sample.txt

Nistgħu nużaw l-asterisk (*) biex inqabblu żero jew aktar okkorrenzi tal-karattru preċedenti. Pereżempju, l-espressjoni regolari ta' hawn taħt taqbel mat-test li fih string we segwit minn żero jew aktar okkorrenzi tal-karattru b.

$ egrep "web*" sample.txt

Nistgħu nużaw il-plus (+) biex inqabblu okkorrenza waħda jew aktar tal-karattru preċedenti. Pereżempju, l-espressjoni regolari ta' hawn taħt taqbel mat-test li fih is-sekwenza we segwita b'mill-inqas okkorrenza waħda tal-karattru b.

$ egrep "web+" sample.txt

Hawnhekk, nistgħu naraw li t-tqabbil tal-mudelli ma jirnexxix għall-kliem - aħna u konna, minħabba n-nuqqas tal-karattru b.

Nistgħu nużaw il-caret (^) biex nirrappreżentaw il-bidu tal-linja. Pereżempju, l-espressjoni regolari hawn taħt tipprintja l-linji li jibdew bit-test Aħna:

$ egrep "^We" sample.txt

Nistgħu nużaw id-dollaru ($) biex nirrappreżentaw it-tmiem tal-linja. Pereżempju, l-espressjoni regolari hawn taħt tipprintja l-linji li jispiċċaw bit-test e.:

$ egrep "e.$" sample.txt

Nistgħu nużaw il-caret (^) immedjatament segwit mid-dollaru ($) biex tirrappreżenta l-linja vojta. Ejja nużaw dan f'espressjoni regolari biex inneħħu linji vojta:

$ egrep -n -v "^$" sample.txt

Fl-output ta 'hawn fuq, nistgħu naraw li n-numri tal-linja 2, 4, 6, 8, u 10 mhumiex murija peress li huma vojta.

F'dan l-artikolu, iddiskutejna xi eżempji utli tal-kmandi egrep. Wieħed jista’ juża dawn l-eżempji fil-ħajja ta’ kuljum biex itejjeb il-produttività.

Taf bl-aħjar eżempju ieħor tal-kmand egrep fil-Linux? Għidilna l-fehmiet tiegħek fil-kummenti hawn taħt.