Kā izmantot komandu fgrep, lai failos atrastu teksta virknes


Īsumā: šajā iesācējiem paredzētajā rokasgrāmatā mēs apspriedīsim dažus komandas fgrep praktiskus piemērus. Līdz šīs rokasgrāmatas beigām lietotāji varēs efektīvi veikt teksta meklēšanas darbības, izmantojot komandrindas saskarni.

Teksta meklēšana ir viena no visbiežāk veiktajām darbībām. Tomēr šis vienkāršais uzdevums ātri kļūst laikietilpīgs, ja lietotāji nepārzina pareizos rīkus. Operētājsistēmā Linux ir dažādas teksta filtrēšanas utilītas, piemēram, sed, cut utt.

Tomēr operētājsistēmā Linux fgrep ir vispiemērotākā utilīta vienkāršai teksta meklēšanai. Šajā rokasgrāmatā mēs apspriedīsim dažus komandas fgrep prakses piemērus, ko var izmantot ikdienas dzīvē.

Komanda fgrep operētājsistēmā Linux ietilpst grep komandu saimē. Tomēr to izmanto, lai meklētu fiksētu virknes modeli, nevis regulāras izteiksmes. Tādējādi komandas nosaukums ir fgrep (Fiksētais GREP).

Komandas fgrep sintakse ir līdzīga citām grep ģimenes komandām:

$ fgrep [OPTIONS] PATTERNS [FILES]

Lai sāktu, izveidosim vienkārša teksta failu ar šādu saturu, lai izmantotu piemēru:

$ cat input.txt

Šeit mēs redzam, ka teksta fails ir gatavs ar parauga saturu. Tagad apspriedīsim dažus izplatītākos komandas fgrep piemērus nākamajos piemēros.

1. Ar ko fgrep atšķiras no komandām grep un egrep?

Kā norāda nosaukums, komanda fgrep tiek izmantota, lai meklētu fiksētos virknes modeļus. Tas interpretē modeli kā fiksētu virkni, nevis regulāru izteiksmi. Tādējādi tas veic meklēšanas darbību laika ziņā efektīvi.

Lai saprastu atšķirību, kopā ar komandu grep izmantosim rakstzīmi (.).

Šī vienkāršā regulārā izteiksme atbilst jebkurai rakstzīmei, izņemot rindas beigas:

$ grep ha. input.txt

Iepriekš redzamajā izvadē var redzēt, ka rakstzīme (.) atbilst tekstam har, hat un has.

Tagad izmantosim to pašu modeli ar komandu fgrep un vērosim rezultātu:

$ fgrep ha. input.txt

Iepriekš minētajā izvadē mēs redzam, ka komandai neizdodas atrast doto modeli.

Tas notiek tāpēc, ka komanda fgrep neatpazīst regulārās izteiksmes un mēģina meklēt neesošu modeli — \ha..

[ Jums varētu patikt arī: Kāda ir atšķirība starp Grep, Egrep un Fgrep operētājsistēmā Linux? ]

2. Kā meklēt paraugu failā

Sāksim ar pamata piemēru, kurā mēs meklēsim virkņu speciālistu failā input.txt:

$ fgrep professionals input.txt

Kā redzam, raksta saskaņošana izdodas divās vietās un tiek izcelta sarkanā krāsā.

3. Kā iestatīt Grep izvades krāsu saskaņotiem modeļiem

Iepriekšējā piemērā mēs redzējām, ka pēc noklusējuma atbilstošais raksts ir izcelts sarkanā krāsā. Tomēr mēs varam mainīt šo darbību, piešķirot vides mainīgajiem GREP_COLOR citu vērtību.

Piešķirsim vērtību 32 vides mainīgajam GREP_COLOR, lai izceltu atbilstošo rakstu zaļā krāsā:

$ export GREP_COLOR=32
$ fgrep professionals input.txt

Tagad, pirms pāriet uz nākamo piemēru, atiestatiet vides mainīgo GREP_COLOR, lai iespējotu noklusējuma darbību:

$ unset GREP_COLOR

4. Kā failā meklēt vairākus modeļus

Dažreiz mums ir jāveic modeļu saskaņošana vairākām virknēm. Šādos gadījumos mēs varam nodrošināt modeļus no teksta faila, nevis komandrindas argumentu.

Izveidosim teksta failu, kurā ir vairāki raksti atsevišķā rindā:

$ cat pattern.txt

professionals
website

Tagad izmantosim šo failu ar opciju -f vairāku rakstu saskaņošanai:

$ fgrep -f pattern.txt input.txt

Iepriekš minētajā izvadā redzams, ka paraugu saskaņošana ir veiksmīga virkņu profesionāļiem un vietnei.

5. Kā ierobežot sakritību skaitu failā

Pēc noklusējuma komanda fgrep turpina veikt modeļa saskaņošanu, līdz tiek apstrādāts viss fails.

Tomēr dažreiz mums ir jāierobežo spēļu skaits. Šādos gadījumos mēs varam izmantot opciju -m ar komandu:

$ fgrep -m 1 professionals input.txt

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

Šajā piemērā komanda fgrep aptur faila apstrādi pēc saskaņošanas ar pirmo modeli.

6. Kā izdrukāt faila nosaukumu, meklējot modeli

Dažreiz mums vienkārši jāatrod to failu nosaukumi, kuros ir konkrēts modelis. Šādos gadījumos mēs varam izmantot komandas fgrep opciju -l:

$ fgrep -l professionals input.txt

input.txt

Šeit mēs redzam, ka komanda vienkārši izdrukā faila nosaukumu, nevis rindiņas ar atbilstošiem modeļiem.

7. Kā izdrukāt faila nosaukumu, ja parauga atbilstība neizdodas

Iepriekšējā piemērā mēs redzējām, kā izdrukāt faila nosaukumu, ja parauga saskaņošana ir veiksmīga. Tagad redzēsim, kā veikt operāciju apgrieztā veidā.

Mēģināsim atrast failā neesošu modeli un novērot rezultātu:

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

input.txt

Šajā piemērā mēs izmantojām komandas opciju -L, kas izdrukā faila nosaukumu, ja modeļa atbilstības noteikšana neizdodas.

8. Kā apspiest kļūdu ziņojumus

Kļūdu apstrādei ir izšķiroša loma, rakstot čaulas skriptus. Tomēr dažos nekritiskos scenārijos mēs varam droši ignorēt kļūdu ziņojumus.

Programmā fgrep mēs varam izmantot opciju -s, kas novērš kļūdas, kas saistītas ar neesošiem vai nelasāmiem failiem. Lai labāk izprastu šo darbību, mēģināsim meklēt modeli neesošā failā:

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

2

Iepriekš minētajā izvadē mēs redzam, ka komanda standarta kļūdu straumē nerāda nekādu kļūdu. Tomēr par kļūdu ziņo atgriešanas vērtība, kas nav nulle.

Papildus tam mēs varam novērot to pašu darbību, ja fails nav lasāms. Tātad, pirmkārt, modificējiet faila atļauju, izmantojot komandu chmod:

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

Tagad mēģiniet meklēt modeli un novērot rezultātu:

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

Šajā rakstā mēs apspriedām dažus noderīgus komandas fgrep piemērus. Iesācēji var izmantot šos piemērus ikdienas dzīvē, lai uzlabotu produktivitāti, strādājot ar Linux.

Vai zināt kādu citu labāko komandas fgrep piemēru operētājsistēmā Linux? Paziņojiet mums savu viedokli tālāk sniegtajos komentāros.