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.