Како их ефикасно користити?

Ако већ неко време користите Линук, већ знате за греп — Глобал Регулар Екпрессион Принт, алатку за обраду текста коју можете да користите за претраживање датотека и директоријума. Веома је користан у рукама искусних Линук корисника. Међутим, његово коришћење без редовног израза може ограничити његове могућности.

Али шта је Регек?

Регек су регуларни изрази које можете користити да побољшате функционалност греп претраге. Регек, по дефиницији, је напредни образац филтрирања излаза. Уз праксу, можете ефикасно користити регек, као што га можете користити и са другим Линук командама.

У нашем водичу ћемо научити како да ефикасно користимо Греп и Регек.

Предуслов

Коришћење греп-а са регек-ом захтева добро познавање Линук-а. Ако сте почетник, погледајте наше водиче за Линук.

Такође вам је потребан приступ лаптопу или рачунару који користи оперативни систем Линук. Можете користити било коју Линук дистрибуцију по вашем избору. И, ако имате Виндовс машину, још увек можете да користите Линук са ВСЛ2. Погледајте наш детаљан преглед овде.

Приступ командној линији/терминалу вам омогућава да покренете све команде наведене у нашем греп/регек водичу.

Штавише, потребан вам је и приступ текстуалним датотекама које ће вам требати да покренете примере. Користио сам ЦхатГПТ да генеришем зид текста, говорећи му да пише о технологији. Промпт који сам користио је као у наставку.

„Генеришите 400 речи о технологији. Требало би да укључује већину технологије. Такође, уверите се да понављате имена технологије у тексту.“

Када је генерисао текст, копирао сам га и сачувао у тецх.ткт датотеци, коју ћемо користити током целог упутства.

На крају, основно разумевање команде греп је неопходно. Можете погледати 16 примера команди греп да бисте освежили своје знање. Такође ћемо укратко представити команду греп да бисте започели.

Синтакса и примери команде греп

Синтакса команде греп је једноставна.

$ grep -options [regex/pattern] [files]

Као што можете приметити, он очекује образац и листу датотека које желите да покренете команду.

Доступно је много греп опција које модификују његову функционалност. Ови укључују:

  • – и: занемарити падеже
  • -р: изврши рекурзивну претрагу
  • -в: извршите претрагу да бисте пронашли само целе речи
  • -в: приказати све неподударне линије
  • -н: приказује све одговарајуће бројеве линија
  • -л: штампа имена датотека
  • – боја: резултат у боји
  • -ц: приказује број подударања за коришћени образац
  Како уклонити ехо из звука у Аудацити-ју

#1. Потражите целу реч

Мораћете да користите аргумент -в са греп за претрагу целе речи. Користећи га, заобилазите све низове који одговарају датом шаблону.

$ grep -w ‘tech\|5G’ tech.txt

Као што видите, команда резултира излазом у којем тражи две речи, „5Г“ и „тецх“, у целом тексту. Затим их обележава црвеном бојом.

Овде, | цев симбол се избегава тако да га греп не обрађује као метазнак.

Да бисте извршили претрагу без обзира на велика и мала слова, користите греп са аргументом -и.

$ grep -i ‘tech’ tech.txt

Команда тражи било коју инстанцу „тецх“ низа без обзира на велика и мала слова, било да је то потпуна реч или њен део.

Да бисте приказали све линије које не садрже дати образац, мораћете да користите аргумент -в.

$ grep -v ‘tech’ tech.txt

Излаз приказује све редове који не садрже реч „тецх“. Такође ћете видети празне линије. Ови редови су редови који су после пасуса.

Да бисте извршили рекурзивну претрагу, користите аргумент -р са греп.

$ grep -R ‘error\|warning’ /var/log/*.log
#output

/var/log/bootstrap.log:2023-01-03 21:40:18 URL:http://ftpmaster.internal/ubuntu/pool/main/libg/libgpg-error/libgpg-erro 0_1.43-3_amd64.deb [69684/69684] -> "/build/chroot//var/cache/apt/archives/partial/libgpg-error0_1.43-3_amd64.deb" [1]

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 5 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 5 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 24 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: parsing file '/var/lib/dpkg/status' near line 24 package 'dpkg':

/var/log/bootstrap.log:dpkg: warning: ignoring pre-dependency problem!

Команда греп рекурзивно тражи две речи, „грешка“ и „упозорење“, у директоријуму /вар/лог. Ово је згодна команда да сазнате о свим упозорењима и грешкама у датотекама евиденције.

Греп и Регек: шта је то и примери

Пошто радимо са регуларним изразом, морате знати да регек нуди три опције синтаксе. Ови укључују:

  • Основни регуларни изрази (БРЕ)
  • Проширени регуларни изрази (ЕРЕ)
  • Пеарл компатибилни регуларни изрази (ПЦРЕ)

Команда греп користи БРЕ као подразумевану опцију. Дакле, ако желите да користите друге режиме регуларног израза, мораћете да их поменете. Команда греп такође третира метакарактере онаквима какви јесу. Дакле, ако користите метакарактере као што су ?, +, ), мораћете да их избегнете помоћу команде обрнуте косе црте (\).

Синтакса греп са регеком је као у наставку.

$ grep [regex] [filenames]

Хајде да видимо греп и регек у акцији са примерима у наставку.

#1. Дословна подударања речи

Да бисте извршили дословно подударање речи, мораћете да наведете стринг као регуларни израз. На крају крајева, реч је такође регуларни израз.

$ grep "technologies" tech.txt

Слично томе, можете користити и дословна подударања да бисте пронашли тренутне кориснике. Да бисте то урадили, трчите,

$ grep bash /etc/passwd
#output

root:x:0:0:root:/root:/bin/bash

nitt:x:1000:1000:,,,:/home/nitt:/bin/bash

Ово приказује кориснике који могу приступити басх-у.

  11 најбољих алата за обрезивање видео записа за личне или пословне потребе

#2. Анцхор Матцхинг

Подударање сидра је корисна техника за напредне претраге помоћу посебних знакова. У редовном изразу постоје различити знакови сидра које можете користити да представите одређене позиције у тексту. Ови укључују:

  • ‘^’ симбол за уметак: Симбол за уметак одговара почетку улазног низа или реда и тражи празан стринг.
  • Симбол долара ‘$’: Симбол долара одговара крају улазног низа или реда и тражи празан стринг.

Друга два сидра која се подударају укључују границу речи ‘\ б’ и границу која није реч о ‘\ Б’.

  • Граница речи ‘\ б’: Помоћу \б можете потврдити позицију између речи и знака који није реч. Једноставним речима, омогућава вам да ускладите потпуне речи. На овај начин можете избећи делимична подударања. Такође можете да га користите за замену речи или бројање појављивања речи у низу.
  • \Б граница без речи: то је супротно од \б границе речи у редовном изразу јер потврђује позицију која није између знакова од две речи или знакова који нису речи.

Хајде да прођемо кроз примере да бисмо добили јасну идеју.

$ grep ‘^From’ tech.txt

Коришћење карета захтева уношење речи или шаблона у тачним великим и великим словима. То је зато што се разликује велика и мала слова. Дакле, ако покренете следећу команду, она неће ништа вратити.

$ grep ‘^from’ tech.txt

Слично, можете користити симбол $ да пронађете реченицу која одговара датом узорку, низу или речи.

$ grep ‘technology.$' tech.txt

Можете комбиновати и симболе ^ и $. Погледајмо пример у наставку.

$ grep “^From \| technology.$” tech.txt

Као што видите, излаз садржи реченице које почињу са „Од“ и реченице које се завршавају са „технологија“.

#3. Груписање

Ако желите да претражујете више образаца одједном, мораћете да користите груписање. Помаже вам да креирате мале групе ликова и образаца које можете третирати као једну целину. На пример, можете да креирате групу (технику) која укључује термин „т“, „е“, „ц“, „х“.

Да бисмо добили јасну идеју, хајде да погледамо пример.

$ grep 'technol\(ogy\)\?' tech.txt

Груписањем можете да упарите поновљене обрасце, да ухватите групе и тражите алтернативе.

Алтернативна претрага са груписањем

Погледајмо пример алтернативне претраге.

$ grep "\(tech\|technology\)" tech.txt

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

$ echo “tech technological technologies technical” |  grep "\(tech\|technology\)"
#output

“tech technological technologies technical”

Снимање група, група без снимања и поновљених образаца

А шта је са групама за хватање и нехватање?

  Виртуализација радне површине објашњена једноставнијим речима

Мораћете да креирате групу у редовном изразу и да је проследите стрингу или фајлу за снимање група.

$ echo 'tech655 tech655nical technologies655 tech655-oriented 655' | grep "\(tech\)\(655\)"
#output

tech655 tech655nical technologies655 tech655-oriented 655

А за групе које не хватају, мораћете да користите ?: унутар заграда.

На крају, имамо поновљене обрасце. Мораћете да измените регуларни израз да бисте проверили да ли се шаблони понављају.

$ echo ‘teach tech ttrial tttechno attest’ | grep '\(t\+\)'
#output

‘teach tech ttrial tttechno attest’

Овде, регуларни израз тражи једну или више инстанци знака ‘т’.

#4. Цхарацтер Цлассес

Са класама знакова можете лако писати изразе регуларног израза. Ове класе знакова користе угласте заграде. Неке од добро познатих класа карактера укључују:

  • [:digit:] – 0 до 9 цифара
  • [:alpha:] – абецедни знакови
  • [:alnum:] – алфанумерички карактери
  • [:lower:] – мала слова
  • [:upper:] – Велика слова
  • [:xdigit:] – хексадецималне цифре, укључујући 0-9, АФ, аф
  • [:blank:] – празни знакови као што су табулатор или размак

И тако даље!

Хајде да проверимо неке од њих у акцији.

$ grep [[:digit]] tech.txt

$ grep [[:alpha:]] tech.txt

$ grep [[:xdigit:]] tech.txt

#5. Квантификатори

Квантификатори су метазнакови и у основи су редовног израза. Ово вам омогућава да тачно ускладите изглед. Погледајмо их у наставку.

  • * → Нула или више подударања
  • + → једно или више подударања
  • ? → Поклапа се нула или једна
  • {к} → к одговара
  • {к, } → к или више подударања
  • {к,з} → од к до з одговара
  • {, з} → до з одговара
$ echo ‘teach tech ttrial tttechno attest’ | grep -E 't+'
#output

‘teach tech ttrial tttechno attest’

Овде тражи инстанце знака ‘т’ за једно или више подударања. Овде -Е означава проширени регуларни израз (о чему ћемо касније разговарати.)

#6. Ектендед Регек

Ако не волите да додајете излазне знакове у шаблон регуларног израза, морате да користите проширени регуларни израз. Уклања потребу за додавањем излазних знакова. Да бисте то урадили, мораћете да користите ознаку -Е.

$ grep -E 'in+ovation' tech.txt

#7. Коришћење ПЦРЕ-а за обављање сложених претрага

ПЦРЕ (Перл Цомпатибле Регулар Екпрессион) омогућава вам много више од писања основних израза. На пример, можете написати „\д“ што означава [0-9].

На пример, можете користити ПЦРЕ за тражење адреса е-поште.

echo "Contact me at [email protected]" | grep -P "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"
#output

Contact me at [email protected]

Овде ПЦРЕ обезбеђује да се образац подудара. Слично томе, можете користити и ПЦРЕ образац да проверите да ли постоје шаблони датума.

$ echo "The Sparkain site launched on 2023-07-29" | grep -P "\b\d{4}-\d{2}-\d{2}\b"
#output

The Sparkain site launched on 2023-07-29

Команда проналази датум у формату ГГГГ-ММ-ДД. Можете га модификовати тако да одговара и другом формату датума.

#8. Алтернација

Ако желите алтернативна подударања, можете користити есцапе-ова знакове (\|).

$ grep -L ‘warning\|error’ /var/log/*.log
#output

/var/log/alternatives.log

/var/log/bootstrap.log

/var/log/dpkg.log

/var/log/fontconfig.log

/var/log/ubuntu-advantage.log

/var/log/upgrade-policy-changed.log

Излаз наводи имена датотека које садрже „упозорење“ или „грешку“.

Завршне речи

Ово нас води до краја нашег водича за греп и регек. Можете да користите греп са регуларним изразом у великој мери да бисте прецизирали претрагу. Уз правилну употребу, можете уштедети доста времена и помоћи у аутоматизацији многих задатака, посебно ако их користите за писање скрипти или коришћење редовног израза за обављање претраживања кроз текст.

Затим погледајте често постављана питања и одговоре на интервјуима за Линук.