Команда 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