Nola erabili fgrep komandoa fitxategietan testu-kateak aurkitzeko


Laburra: hasiberrientzako gida honetan, fgrep komandoaren adibide praktiko batzuk eztabaidatuko ditugu. Gida honen amaieran, erabiltzaileek testu-bilaketa eragiketak modu eraginkorrean egin ahal izango dituzte komando lerroko interfazea erabiliz.

Testu-bilaketa gehien egiten den eragiketa bat da. Hala ere, zeregin sinple honek denbora asko hartzen du erabiltzaileek tresna egokiak ezagutzen ez dituztenean. Linuxen, testuak iragazteko hainbat utilitate daude, hala nola sed, cut, etab.

Hala ere, Linux-en, fgrep da testu-bilaketa errazetarako erabilgarritasunik onena. Gida honetan, eguneroko bizitzan erabil daitezkeen fgrep komandoaren praktika adibide batzuk eztabaidatuko ditugu.

Linux-en fgrep komandoa grep komandoaren familian sartzen da. Hala ere, adierazpen erregularren ordez kate finkoaren eredua bilatzeko erabiltzen da. Horregatik komandoaren izena fgrep da (GREP finkoa).

fgrep komandoaren sintaxia beste grep familiako komandoen antzekoa da:

$ fgrep [OPTIONS] PATTERNS [FILES]

Hasteko, sor dezagun testu arrunteko fitxategi bat eduki hauekin adibide bat erabiltzeko:

$ cat input.txt

Hemen, testu-fitxategia laginaren edukiarekin prest dagoela ikus dezakegu. Orain eztabaida ditzagun fgrep komandoaren adibide arrunt batzuk hurrengo adibideetan.

1. Nola desberdina da fgrep grep eta egrep komandoak baino?

Izenak dioen bezala, fgrep komandoa kate finkoen ereduak bilatzeko erabiltzen da. Eredua adierazpen erregular baten ordez kate finko gisa interpretatzen du. Horregatik, bilaketa-eragiketa denbora-eraginkortasunean egiten du.

Desberdintasuna ulertzeko, erabil dezagun dot (.) karakterea grep komandoarekin.

Adierazpen erregular sinple honek edozein karaktere bat dator lerroaren amaierarekin izan ezik:

$ grep ha. input.txt

Goiko irteeran, puntu (.) karaktereak har, hat eta has testuarekin bat egiten zuela ikus dezakegu.

Orain, erabili eredu bera fgrep komandoarekin eta beha dezagun emaitza:

$ fgrep ha. input.txt

Goiko irteeran, komandoak emandako eredua aurkitzen huts egiten duela ikus dezakegu.

Hau gertatzen da fgrep komandoak ez dituelako adierazpen erregularrak ezagutzen eta existitzen ez den eredua bilatzen saiatzen delako: \ha..

[ Ere gustatuko litzaizuke: Zein da Grep, Egrep eta Fgrep-en arteko aldea Linuxen? ]

2. Nola bilatu eredu bat fitxategi batean

Has gaitezen input.txt fitxategi batean kate profesional bat bilatuko dugun oinarrizko adibidearekin:

$ fgrep professionals input.txt

Ikusten dugunez, ereduen parekatzeak bi lekutan lortzen du eta kolore gorriz nabarmentzen da.

3. Nola ezarri Grep irteerako kolorea bat datozen ereduetarako

Aurreko adibidean, lehenespenez, bat datorren eredua kolore gorriz nabarmentzen dela ikusi genuen. Hala ere, portaera hori alda dezakegu GREP_COLOR ingurune-aldagaiei beste balio bat emanez.

Esleitu diezaiogun 32 balioa GREP_COLOR ingurune-aldagaiari bat datorren eredua kolore berdez nabarmentzeko:

$ export GREP_COLOR=32
$ fgrep professionals input.txt

Orain, hurrengo adibidera pasatu aurretik, deskonfiguratu GREP_COLOR ingurune-aldagaia portaera lehenetsia gaitzeko:

$ unset GREP_COLOR

4. Nola bilatu eredu anitz fitxategi batean

Batzuetan, kate anitzeko ereduen bat etortzea egin behar dugu. Kasu horietan, testu-fitxategiko ereduak eman ditzakegu komando lerroko argumentuaren ordez.

Sortu dezagun hainbat eredu dituen testu-fitxategi bat lerro bereizi batean:

$ cat pattern.txt

professionals
website

Orain, erabil dezagun fitxategi hau -f aukerarekin hainbat eredu bat etortzeko:

$ fgrep -f pattern.txt input.txt

Goiko irteeran, ereduen bat etortzea arrakastatsua dela ikus dezakegu kateen profesionalentzat eta webgunearentzat.

5. Nola mugatu fitxategiko bat-etortze kopurua

Lehenespenez, fgrep komandoak eredua bat etortzen jarraitzen du fitxategi osoa prozesatu arte.

Hala ere, batzuetan partida kopurua mugatu behar dugu. Horrelakoetan, -m aukera erabil dezakegu komandoarekin:

$ fgrep -m 1 professionals input.txt

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

Adibide honetan, fgrep komandoak fitxategiaren prozesamendua geldiarazten du lehen ereduarekin bat egin ondoren.

6. Nola inprimatu fitxategiaren izena eredua bilatzean

Batzuetan, eredu jakin bat dagoen fitxategien izena bilatu behar dugu. Kasu horietan, fgrep komandoaren -l aukera erabil dezakegu:

$ fgrep -l professionals input.txt

input.txt

Hemen, komandoak fitxategiaren izena inprimatzen duela ikus dezakegu, bat datozen ereduekin lerroen ordez.

7. Nola inprimatu Fitxategiaren izena Ereduen parekatzeak huts egiten duenean

Aurreko adibidean, ikusi genuen nola inprimatu fitxategiaren izena ereduen bat etortzen denean. Orain, ikus dezagun nola egin eragiketa alderantziz.

Saia gaitezen fitxategian existitzen ez den eredua aurkitzen eta ikusi emaitza:

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

input.txt

Adibide honetan, fitxategiaren izena inprimatzen duen komandoaren -L aukera erabili dugu ereduen bat ez denean.

8. Nola kendu errore-mezuak

Erroreen kudeaketak funtsezko zeregina du shell scriptak idaztean. Hala ere, egoera kritiko ez diren batzuetan, errore-mezuei segurtasunez alde batera utzi diezaiekegu.

fgrep-en, existitzen ez diren edo irakurezinak diren fitxategiekin erlazionatutako akatsak kentzen dituen -s aukera erabil dezakegu. Jokaera hau hobeto ulertzeko, saia gaitezen eredu bat bilatzen existitzen ez den fitxategian:

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

2

Goiko irteeran, ikus dezakegu komandoak ez duela errorerik bistaratzen errore-korronte estandarrean. Dena den, hutsegitearen berri ematen du zero ez den itzuleraren balioak.

Honetaz gain, portaera bera ere ikus dezakegu fitxategia irakurgaitza denean. Beraz, lehenik eta behin, aldatu fitxategiaren baimena chmod komandoa erabiliz:

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

Orain, saiatu eredua bilatzen eta behatu emaitza:

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

Artikulu honetan, fgrep komandoaren adibide erabilgarriak aztertu ditugu. Hasiberriek adibide hauek erabil ditzakete eguneroko bizitzan produktibitatea hobetzeko Linux-ekin lan egiten duten bitartean.

Ezagutzen al duzu Linux-en fgrep komandoaren beste adibiderik onenaren bat? Jakin iezaguzu zure iritzia beheko iruzkinetan.