Kif tuża l-kmand fgrep biex issib Strings tat-Test fil-Fajls


Qosor: F'din il-gwida faċli għall-Bidu, se niddiskutu xi eżempji prattiċi tal-kmand fgrep. Sa tmiem din il-gwida, l-utenti jkunu jistgħu jwettqu operazzjonijiet ta 'tfittxija ta' test b'mod effiċjenti billi jużaw l-interface tal-linja tal-kmand.

It-tiftix tat-test huwa wieħed mill-aktar operazzjonijiet li jsiru b'mod komuni. Madankollu, dan il-kompitu sempliċi malajr jieħu ħafna ħin jekk l-utenti ma jkunux familjari mal-għodod korretti. Fil-Linux, hemm diversi utilitajiet li jiffiltraw it-test bħal sed, cut, eċċ.

Madankollu, fil-Linux, fgrep hija l-aktar utilità preferuta għal tiftix ta 'test sempliċi. F'din il-gwida, se niddiskutu xi eżempji ta' prattika tal-kmand fgrep li jistgħu jintużaw fil-ħajja ta' kuljum.

Il-kmand fgrep f'Linux jaqa' taħt il-familja tal-kmand grep. Madankollu, tintuża biex tfittex il-mudell ta 'korda fissa minflok espressjonijiet regolari. Għalhekk l-isem tal-kmand huwa fgrep (GREP Fiss).

Is-sintassi tal-kmand fgrep hija simili għall-kmandi l-oħra tal-familja grep:

$ fgrep [OPTIONS] PATTERNS [FILES]

Biex tibda, ejja noħolqu fajl b'test sempliċi bil-kontenut li ġej biex tuża eżempju:

$ cat input.txt

Hawnhekk, nistgħu naraw li l-fajl tat-test huwa lest bil-kontenut tal-kampjun. Issa ejja niddiskutu xi eżempji komuni tal-kmand fgrep fil-ftit eżempji li ġejjin.

1. Kif fgrep Huwa Differenti mill-Kmandi grep u egrep?

Kif jissuġġerixxi l-isem, il-kmand fgrep jintuża biex tfittex il-mudelli tal-kordi fissi. Jinterpreta l-mudell bħala string fissa minflok espressjoni regolari. Għalhekk twettaq l-operazzjoni ta 'tfittxija b'mod effiċjenti fil-ħin.

Biex tifhem id-differenza, ejja nużaw karattru punt (.) bil-kmand grep.

Din l-espressjoni regolari sempliċi taqbel ma' kwalunkwe karattru wieħed ħlief għat-tmiem tal-linja:

$ grep ha. input.txt

Fl-output ta 'hawn fuq, nistgħu naraw li l-karattru dot (.) qabbel mat-test har, hat, and has.

Issa, ejja nużaw l-istess mudell mal-kmand fgrep u osservaw ir-riżultat:

$ fgrep ha. input.txt

Fl-output ta 'hawn fuq, nistgħu naraw li l-kmand jonqos milli jsib il-mudell mogħti.

Dan jiġri minħabba li l-kmand fgrep ma jagħrafx espressjonijiet regolari u jipprova jfittex il-mudell li ma jeżistix – \ha.”.

[ Tista 'tħobb ukoll: X'inhi d-differenza bejn Grep, Egrep u Fgrep fil-Linux? ]

2. Kif Fittex Mudell f'Fajl

Nibdew bl-eżempju bażiku fejn se nfittxu professjonali string f'fajl input.txt:

$ fgrep professionals input.txt

Kif nistgħu naraw, it-tqabbil tal-mudell jirnexxi f'żewġ postijiet u huwa enfasizzat b'kulur aħmar.

3. Kif Issettja l-Kulur tal-Output Grep għal Disinji Imqabbla

Fl-eżempju preċedenti, rajna li, b'mod awtomatiku, il-mudell imqabbel huwa enfasizzat b'kulur aħmar. Madankollu, nistgħu nibdlu din l-imġieba billi nassenjaw valur differenti għall-varjabbli tal-ambjent GREP_COLOR.

Ejja nassenjaw il-valur 32 għall-varjabbli ta' l-ambjent GREP_COLOR biex tenfasizza l-mudell imqabbel b'kulur aħdar:

$ export GREP_COLOR=32
$ fgrep professionals input.txt

Issa, qabel ma tgħaddi għall-eżempju li jmiss, aqla 'l-varjabbli ambjentali GREP_COLOR biex tippermetti l-imġieba default:

$ unset GREP_COLOR

4. Kif Fittex Disinji Multipli f'Fajl

Xi drabi, għandna bżonn inwettqu tqabbil tal-mudelli għal kordi multipli. F'każijiet bħal dawn, nistgħu nipprovdu l-mudelli mill-fajl tat-test minflok l-argument tal-linja tal-kmand.

Ejja noħolqu fajl ta 'test li fih mudelli multipli fuq linja separata:

$ cat pattern.txt

professionals
website

Issa, ejja nużaw dan il-fajl bl-għażla -f għal tqabbil ta’ mudelli multipli:

$ fgrep -f pattern.txt input.txt

Fl-output ta 'hawn fuq, nistgħu naraw li t-tqabbil tal-mudell jirnexxi għall-professjonisti tal-kordi u l-websajt.

5. Kif tillimita n-numru ta 'logħbiet fil-fajl

B'mod awtomatiku, il-kmand fgrep ikompli jwettaq it-tqabbil tal-mudell sakemm il-fajl kollu jiġi pproċessat.

Madankollu, xi kultant irridu nillimitaw in-numru ta 'logħbiet. F'każijiet bħal dawn, nistgħu nużaw l-għażla -m bil-kmand:

$ fgrep -m 1 professionals input.txt

TecMint was started on 15th August 2012 by technical professionals and all the

F'dan l-eżempju, il-kmand fgrep iwaqqaf l-ipproċessar tal-fajl wara li jaqbel mal-ewwel mudell.

6. Kif Tipprintja l-Isem tal-Fajl Meta Tfittex Pattern

Xi drabi, irridu biss insibu l-isem tal-fajls li fihom mudell partikolari huwa preżenti. F'każijiet bħal dawn, nistgħu nużaw l-għażla -l tal-kmand fgrep:

$ fgrep -l professionals input.txt

input.txt

Hawnhekk, nistgħu naraw li l-kmand biss jistampa l-isem tal-fajl minflok il-linji bil-mudelli mqabbla.

7. Kif Tipprintja l-Isem tal-Fajl Meta It-Tqabbil tal-Disinn Jfalli

Fl-eżempju preċedenti, rajna kif tipprintja l-isem tal-fajl meta t-tqabbil tal-mudell jirnexxi. Issa, ejja naraw kif twettaq l-operazzjoni b'mod invers.

Ejja nippruvaw insibu l-mudell li ma jeżistix fil-fajl u osserva r-riżultat:

$ fgrep -L non-existing-word input.txt

input.txt

F'dan l-eżempju, użajna l-għażla -L tal-kmand li jistampa l-isem tal-fajl meta t-tqabbil tal-mudelli ma jirnexxix.

8. Kif Trażżan Messaġġi ta 'Żball

L-immaniġġjar tal-iżbalji għandu rwol kruċjali waqt il-kitba ta' skripts tal-qoxra. Madankollu, f'xi xenarji mhux kritiċi, nistgħu ninjoraw b'mod sikur il-messaġġi ta 'żball.

F'fgrep, nistgħu nużaw l-għażla -s li trażżan żbalji relatati ma' fajls li ma jeżistux jew li ma jinqrawx. Biex tifhem din l-imġieba b'mod aħjar, ejja nippruvaw infittxu mudell fil-fajl li ma jeżistix:

$ fgrep -s professionals non-existing-file.txt
$ echo $?

2

Fl-output ta 'hawn fuq, nistgħu naraw li l-kmand ma juri l-ebda żball fuq il-fluss ta' żball standard. Madankollu, in-nuqqas huwa rrappurtat mill-valur tar-ritorn mhux żero.

Minbarra dan, nistgħu wkoll nosservaw l-istess imġieba meta l-fajl ma jinqarax. Allura, l-ewwel, immodifika l-permess tal-fajl billi tuża l-kmand chmod:

$ chmod 000 input.txt 
$ ls -l input.txt

Issa, ipprova fittex il-mudell u osserva r-riżultat:

$ fgrep -s professionals input.txt 
$ echo $?

F'dan l-artikolu, iddiskutejna xi eżempji utli tal-kmand fgrep. Dawk li jibdew jistgħu jużaw dawn l-eżempji fil-ħajja ta 'kuljum biex itejbu l-produttività waqt li jaħdmu mal-Linux.

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