Команда Grep во Linux/UNIX


Во Linux и Unix Systems Grep, кратенка од „глобален регуларен израз за печатење“, е команда што се користи за пребарување и усогласување на текстуални датотеки содржани во регуларните изрази. Понатаму, командата е претходно инсталирана во секоја дистрибуција на Linux. Во ова упатство, ќе ја разгледаме употребата на Common grep командата со неколку примери.

Команда Grep во Linux

Командата Grep може да се користи за наоѓање или пребарување на регуларен израз или низа во текстуална датотека. За да го покажеме ова, ајде да создадеме текстуална датотека welcome.txt и да додадеме содржина како што е прикажано.

Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.

Одлично! Сега сме подготвени да извршиме неколку grep команди и да манипулираме со излезот за да ги добиеме посакуваните резултати. За да пребарувате низа во датотека, извршете ја командата подолу Синтакса

$ grep "string" file name

ИЛИ

$ filename grep "string"

Пример:

$ grep "Linux" welcome.txt
$ grep "string" /path/to/file

Боење на резултатите од Grep користејќи ја опцијата --color

Ако работите на систем кој не ја прикажува низата или шемата за пребарување во различна боја од остатокот од текстот, користете ја --color за да ги издвоите вашите резултати. Пример

$ grep --color "free and opensource" welcome.txt 

Пребарување на низа рекурзивно во сите директориуми

Ако сакате да пребарувате низа во вашиот тековен директориум и сите други поддиректориуми, пребарувајте користејќи го знамето - r како што е прикажано

$ grep -r "string-name" *

На пример

$ grep -r "linux" *

Игнорирање на чувствителноста на мали букви

Во горниот пример, нашите резултати од пребарувањето ни го дадоа она што го сакавме бидејќи низата \„Linux“ беше назначена со големи букви и исто така постои во датотеката со големи букви. Сега да се обидеме да ја бараме низата со мали букви.

$ grep "linux" file name

Ништо од излезот, нели? Ова е затоа што grepping не можеше да ја најде и да се совпадне со низата \linux, бидејќи првата буква е мала. За да ја игнорирате чувствителноста на големи букви, користете го знамето -i и извршете ја командата подолу

$ grep -i "linux" welcome.txt

Брои ги линиите каде низите се совпаѓаат со -c опција

За да го изброите вкупниот број на линии каде што се појавува или се наоѓа шемата на стрингот, извршете ја командата подолу

$ grep -c "Linux" welcome.txt

Користење на Grep за инвертирање на излезот

За да го превртите излезот Grep, користете го знамето -v. Опцијата -v му наложува на grep да ги испечати сите линии што не го содржат или одговараат на изразот. Опцијата –v му кажува на grep да го преврти својот излез, што значи дека наместо да печатите соодветни линии, направете го спротивното и испечатете ги сите линии што не се совпаѓаат со изразот. Враќајќи се на нашата датотека, дозволете ни да ги прикажеме броевите на линиите како што е прикажано. Притиснете ESC на уредувачот Vim, напишете целосна две точки проследено со

 set nu
$ grep -v "Linux" welcome.txt

Нумерирајте ги линиите што ја содржат шемата за пребарување со -n опција

За да ги нумерирате линиите каде што се совпаѓа шемата на стрингот, користете ја опцијата -n како што е прикажано

$ grep -n "Linux" welcome.txt

Пребарајте збор за точно совпаѓање користејќи ја опцијата -w

Ако поминете, тогаш знамето -w ќе ја бара линијата што го содржи точно совпаѓачкиот збор како што е прикажано

$ grep -w "opensource" welcome.txt
$ grep -w "open" welcome.txt

НИКАКВИ резултати нема да бидат вратени бидејќи не бараме шема туку точен збор!

Користење на цевки со grep

Командата grep може да се користи заедно со цевки за да се добие различен излез. На пример, ако сакате да знаете дали одреден пакет е инсталиран во системот Ubuntu, извршете

$ dpkg -L | grep "package-name"

На пример, за да дознаете дали OpenSSH е инсталиран во вашата системска цевка, командата dpkg -l за grep како што е прикажано

$ dpkg -L | grep -i "openssh"

Прикажување на бројот на линии пред или по шема за пребарување Користење цевки

Можете да ги користите -A или -B за да го прикажете бројот на линии што или претходат или доаѓаат по низата за пребарување. Знамето -A ги означува линиите што доаѓаат по низата за пребарување и -B го печати излезот што се појавува пред низата за пребарување. На пример

$ ifconfig | grep -A 4 ens3
$ ifconfig | grep -B 4 ether

Користење grep со редовни изрази (REGEX)

Терминот REGEX е акроним за REGular EXpression. REGEX е низа од знаци што се користи за совпаѓање на шема. Подолу се неколку примери:

^      Matches characters at the beginning of a line
$      Matches characters at the end of a line
"."    Matches any character
[a-z]  Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets

Пример За печатење линии кои започнуваат со одреден знак, синтаксата е;

grep ^character file_name

На пример, за да ги прикажеме линиите што започнуваат со буквата \d во нашата датотека welcome.txt, би извршиле

$ grep ^d welcome.txt 
$ grep x$ welcome.txt

Добивање помош со повеќе опции за Grep

Ако треба да дознаете повеќе за употребата на командата Grep, извршете ја командата подолу за да добиете прикриен преглед на други знаменца или опции што може да ги користите заедно со командата.

$ grep --help