Com utilitzar l'ordre fgrep per trobar cadenes de text als fitxers


Breu: en aquesta guia amigable per a principiants, parlarem d'alguns exemples pràctics de l'ordre fgrep. Al final d'aquesta guia, els usuaris podran realitzar operacions de cerca de text de manera eficient mitjançant la interfície de línia d'ordres.

La cerca de text és una de les operacions més habituals. Tanmateix, aquesta tasca senzilla es converteix ràpidament en temps si els usuaris no estan familiaritzats amb les eines adequades. A Linux, hi ha diverses utilitats de filtratge de text com ara sed, cut, etc.

Tanmateix, a Linux, fgrep és la utilitat preferida per a la cerca de text senzilla. En aquesta guia, parlarem d'alguns exemples pràctics de l'ordre fgrep que es poden utilitzar a la vida diària.

L'ordre fgrep a Linux forma part de la família de l'ordre grep. Tanmateix, s'utilitza per cercar el patró de cadena fixa en lloc d'expressions regulars. Per tant, el nom de l'ordre és fgrep (GREP fix).

La sintaxi de l'ordre fgrep és similar a les altres ordres de la família grep:

$ fgrep [OPTIONS] PATTERNS [FILES]

Per començar, creem un fitxer de text senzill amb el contingut següent per utilitzar un exemple:

$ cat input.txt

Aquí, podem veure que el fitxer de text està preparat amb el contingut de la mostra. Ara analitzem alguns exemples comuns de l'ordre fgrep als següents exemples.

1. Com és diferent fgrep de les ordres grep i egrep?

Com el seu nom indica, l'ordre fgrep s'utilitza per cercar els patrons de cadena fixa. Interpreta el patró com una cadena fixa en lloc d'una expressió regular. Per tant, realitza l'operació de cerca d'una manera eficient en el temps.

Per entendre la diferència, utilitzem un caràcter de punt (.) amb l'ordre grep.

Aquesta expressió regular simple coincideix amb qualsevol caràcter, excepte el final de la línia:

$ grep ha. input.txt

A la sortida anterior, podem veure que el caràcter de punt (.) coincideix amb el text har, hat i has.

Ara, utilitzem el mateix patró amb l'ordre fgrep i observem el resultat:

$ fgrep ha. input.txt

A la sortida anterior, podem veure que l'ordre no troba el patró donat.

Això passa perquè l'ordre fgrep no reconeix expressions regulars i intenta cercar el patró inexistent: \ha..

[ També us pot agradar: Quina diferència hi ha entre Grep, Egrep i Fgrep a Linux? ]

2. Com cercar un patró en un fitxer

Comencem amb l'exemple bàsic on cercarem un professional de cadena en un fitxer input.txt:

$ fgrep professionals input.txt

Com podem veure, la concordança del patró té èxit en dos llocs i es ressalta en color vermell.

3. Com configurar el color de sortida de Grep per als patrons coincidents

A l'exemple anterior, vam veure que, per defecte, el patró coincident es ressalta en color vermell. Tanmateix, podem alterar aquest comportament assignant un valor diferent a les variables d'entorn GREP_COLOR.

Assignem el valor 32 a la variable d'entorn GREP_COLOR per ressaltar el patró coincident en color verd:

$ export GREP_COLOR=32
$ fgrep professionals input.txt

Ara, abans de passar al següent exemple, desactiveu la variable d'entorn GREP_COLOR per habilitar el comportament predeterminat:

$ unset GREP_COLOR

4. Com cercar diversos patrons en un fitxer

De vegades, hem de fer una concordança de patrons per a diverses cadenes. En aquests casos, podem proporcionar els patrons del fitxer de text en lloc de l'argument de la línia d'ordres.

Creem un fitxer de text que contingui diversos patrons en una línia separada:

$ cat pattern.txt

professionals
website

Ara, utilitzem aquest fitxer amb l'opció -f per fer coincidir diversos patrons:

$ fgrep -f pattern.txt input.txt

A la sortida anterior, podem veure que la concordança de patrons té èxit per als professionals de les cadenes i el lloc web.

5. Com limitar el nombre de coincidències al fitxer

Per defecte, l'ordre fgrep continua fent la concordança del patró fins que es processa tot el fitxer.

Tanmateix, de vegades hem de limitar el nombre de partits. En aquests casos, podem utilitzar l'opció -m amb l'ordre:

$ fgrep -m 1 professionals input.txt

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

En aquest exemple, l'ordre fgrep atura el processament del fitxer després de fer coincidir el primer patró.

6. Com imprimir el nom del fitxer en cercar un patró

De vegades, només necessitem trobar el nom dels fitxers en què hi ha un patró determinat. En aquests casos, podem utilitzar l'opció -l de l'ordre fgrep:

$ fgrep -l professionals input.txt

input.txt

Aquí, podem veure que l'ordre només imprimeix el nom del fitxer en lloc de les línies amb els patrons coincidents.

7. Com imprimir el nom del fitxer quan falla la concordança del patró

A l'exemple anterior, vam veure com imprimir el nom del fitxer quan la concordança dels patrons té èxit. Ara, anem a veure com realitzar l'operació de manera inversa.

Intentem trobar el patró inexistent al fitxer i observem el resultat:

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

input.txt

En aquest exemple, hem utilitzat l'opció -L de l'ordre que imprimeix el nom del fitxer quan la concordança del patró no té èxit.

8. Com suprimir missatges d'error

El maneig d'errors té un paper crucial mentre s'escriuen scripts d'intèrpret d'ordres. Tanmateix, en alguns escenaris no crítics, podem ignorar amb seguretat els missatges d'error.

A fgrep, podem utilitzar l'opció -s que suprimeix els errors relacionats amb fitxers inexistents o il·legibles. Per entendre millor aquest comportament, intentem cercar un patró al fitxer inexistent:

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

2

A la sortida anterior, podem veure que l'ordre no mostra cap error al flux d'error estàndard. Tanmateix, l'error s'informa del valor de retorn diferent de zero.

A més d'això, també podem observar el mateix comportament quan el fitxer és il·legible. Per tant, primer, modifiqueu el permís del fitxer mitjançant l'ordre chmod:

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

Ara, prova de cercar el patró i observa el resultat:

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

En aquest article, hem comentat alguns exemples útils de l'ordre fgrep. Els principiants poden utilitzar aquests exemples en el dia a dia per millorar la productivitat mentre treballen amb Linux.

Coneixeu algun altre millor exemple de l'ordre fgrep a Linux? Feu-nos saber les vostres opinions als comentaris a continuació.