Как да използвате командата fgrep за търсене на низове в Linux

Сподели

Накратко: В това ръководство за начинаещи ще обсъдим някои практически примери за командата fgrep. До края на това ръководство потребителите ще могат ефективно да извършват операции за търсене на текст с помощта на интерфейса на командния ред.

Търсенето на текст е една от най-често извършваните операции. Тази проста задача обаче бързо отнема време, ако потребителите не са запознати с правилните инструменти. В Linux има различни помощни програми за филтриране на текст като awk, sed, разрези т.н.

В Linux обаче, fgrep е най-предпочитаната помощна програма за лесно търсене на текст. В това ръководство ще обсъдим някои практически примери за fgrep команда, която може да се използва в ежедневието.

The fgrep команда в Linux попада в семейството на командата grep. Той обаче се използва за търсене на фиксиран низов модел вместо регулярни изрази. Оттук и името на командата е fgrep (Фиксиран GREP).

Синтаксисът на fgrep командата е подобна на другите команди от семейството на grep:

$ fgrep [OPTIONS] PATTERNS [FILES]

Като начало, нека създадем обикновен текстов файл със следното съдържание, за да използваме пример:

$ cat input.txt
Преглед на съдържанието на файла в Linux
Преглед на съдържанието на файла в Linux

Тук можем да видим, че текстовият файл е готов с примерното съдържание. Сега нека обсъдим някои общи примери за fgrep команда в следващите няколко примера.

1. По какво fgrep е различен от командите grep и egrep?

Както подсказва името, fgrep командата се използва за търсене на фиксирани модели на низове. Той интерпретира шаблона като фиксиран низ вместо регулярен израз. Следователно той извършва операцията за търсене по ефективен във времето начин.

За да разберем разликата, нека използваме точка (.) знак с командата grep.

Този прост регулярен израз съвпада с всеки отделен знак с изключение на края на реда:

$ grep ha. input.txt
Търсене на единичен знак с Grep
Търсене на единичен знак с Grep

В горния резултат можем да видим, че точката (.) знак съвпада с текста коса, шапкаи има.

Сега нека използваме същия модел с fgrep команда и наблюдавайте резултата:

$ fgrep ha. input.txt

В горния резултат можем да видим, че командата не успява да намери дадения модел.

Това се случва, защото fgrep командата не разпознава регулярни изрази и се опитва да търси несъществуващия модел – “ha.”.

[ You might also like: What’s Difference Between Grep, Egrep and Fgrep in Linux? ]

2. Как да търсите модел във файл

Нека започнем с основния пример, където ще търсим string professional в an input.txt файл:

$ fgrep professionals input.txt
Търсене на шаблон във файла
Търсене на шаблон във файла

Както виждаме, съпоставянето на шаблона е успешно на две места и е маркирано в червено.

3. Как да зададете изходен цвят на Grep за съответстващи шаблони

В предишния пример видяхме, че по подразбиране съответстващият шаблон е маркиран в червен цвят. Въпреки това можем да променим това поведение, като присвоим различна стойност на GREP_COLOR променливи на средата.

Нека присвоим стойността 32 към GREP_COLOR променлива на средата за маркиране на съответстващия шаблон в зелен цвят:

$ export GREP_COLOR=32
$ fgrep professionals input.txt
Задайте изходен цвят на Grep за съвпадащи шаблони
Задайте изходен цвят на Grep за съвпадащи шаблони

Сега, преди да преминете към следващия пример, премахнете настройката GREP_COLOR променлива на средата, за да активирате поведението по подразбиране:

$ unset GREP_COLOR

4. Как да търсите множество шаблони във файл

Понякога трябва да извършим съпоставяне на шаблон за множество низове. В такива случаи можем да предоставим моделите от текстовия файл вместо аргумента от командния ред.

Нека създадем текстов файл, който съдържа множество шаблони на отделен ред:

$ cat pattern.txt

professionals
website

Сега нека използваме този файл с -f опция за съвпадение на няколко шаблона:

$ fgrep -f pattern.txt input.txt
Търсене на множество шаблони с fgrep
Търсене на множество шаблони с fgrep

В горния резултат можем да видим, че съвпадението на шаблона е успешно за низовете професионалисти и уебсайт.

5. Как да ограничите броя на съвпаденията във файла

По подразбиране, fgrep командата продължава да изпълнява съпоставянето на шаблона, докато не бъде обработен целият файл.

Понякога обаче трябва да ограничим броя на съвпаденията. В такива случаи можем да използваме -m опция с командата:

$ fgrep -m 1 professionals input.txt

Zamunda.info was started on 15th August 2012 by technical professionals and all the

В този пример, fgrep командата спира обработката на файла след съвпадение на първия шаблон.

6. Как да отпечатате име на файл при търсене на шаблон

Понякога просто трябва да намерим името на файловете, в които присъства конкретен модел. В такива случаи можем да използваме -l опция на fgrep команда:

$ fgrep -l professionals input.txt

input.txt

Тук можем да видим, че командата просто отпечатва името на файла вместо редовете със съответстващите шаблони.

7. Как да отпечатате име на файл, когато съпоставянето на шаблона е неуспешно

В предишния пример видяхме как да отпечатаме името на файла, когато съпоставянето на образец е успешно. Сега нека видим как да извършим операцията по обратен начин.

Нека се опитаме да намерим несъществуващия модел във файла и да видим резултата:

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

input.txt

В този пример използвахме -L опция на командата, която отпечатва името на файла, когато съпоставянето на образец не успее.

8. Как да потиснете съобщенията за грешка

Обработката на грешки играе решаваща роля при писането на скриптове на обвивката. Въпреки това, в някои некритични сценарии, можем безопасно да игнорираме съобщенията за грешка.

в fgrepможем да използваме -s опция, която потиска грешките, свързани с несъществуващи или нечетими файлове. За да разберем по-добре това поведение, нека се опитаме да потърсим модел в несъществуващия файл:

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

2

В горния изход можем да видим, че командата не показва никаква грешка в стандартния поток от грешки. Неуспехът обаче се съобщава от ненулевата върната стойност.

В допълнение към това можем да наблюдаваме същото поведение, когато файлът е нечетим. Така че, първо, променете разрешението за файл, като използвате chmod команда:

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

Сега опитайте да потърсите модела и наблюдавайте резултата:

$ fgrep -s professionals input.txt 
$ echo $?
Grep Игнориране на съобщенията за грешка
Grep Игнориране на съобщенията за грешка

В тази статия обсъдихме някои полезни примери за fgrep команда. Начинаещите могат да използват тези примери в ежедневието си, за да подобрят производителността, докато работят с Linux.

Знаете ли за някой друг най-добър пример за командата fgrep в Linux? Кажете ни вашето мнение в коментарите по-долу.

Публикациите се превеждат автоматично с google translate

Loading


Сподели