греп

Коришћење греп-а (и егреп-а) са регуларним изразима

Коришћење греп-а (и егреп-а) са регуларним изразима
Овај водич описује како се користи обоје грепегреп) то проналажење текста у датотекама, у њиховом једноставном облику и у комбинацији са регуларним изразима. Садржи неколико примери и вежбе, плус решења, да гледалац доврши.

Име греп долази из ед (и вим) наредбе „г / ре / п“, што значи глобално тражење датог регуларног израза и испис (приказ) резултата.

Редовно Изрази

Услужни програми омогућавају кориснику да претражује текстуалне датотеке за редове који се подударају са регуларним изразом (регекп). Регуларни израз је низ за претрагу који се састоји од текста и једног или више од 11 специјалних знакова. Једноставан пример је подударање почетка линије.

Пример датотеке

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

Користите уређивач као што је нано или вим за копирање доњег текста у датотеку која се зове мифиле.

киз
кизде
екизд
декиз
д?гкиз
ккз
кзз
к \ з
к * з
кз
к з
КСИЗ
КСИИЗ
кИз
кииз
киииз
кииииз

Иако примере можете да копирате и налепите у текст (имајте на уму да двоструки наводници можда неће бити правилно копирани), наредбе морају бити откуцане како би их правилно научили.

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

$ мачка мој фајл

Једноставно претраживање

Да бисте пронашли текст 'киз' у датотеци, покрените следеће:

$ греп киз мифиле

Коришћење боја

Да бисте приказали боје, користите -цолор (двоструку цртицу) или једноставно направите псеудоним. На пример:

$ греп --цолор киз мифиле

или

$ алиас греп = 'греп --боја'
$ греп киз мифиле

Опције

Уобичајене опције коришћене са греп наредба укључује:

На пример:

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

Направите више датотека

Пре покушаја претраживања више датотека, прво створите неколико нових датотека:

$ ецхо киз> мифиле1
$ ецхо -е “киз \ нкзз \ нКСИЗ”> мифиле2
$ ецхо -е “ккк \ ниии”> мифиле3
$ мачка мифиле1
$ мачка мифиле2
$ цат мифиле3

Претражите више датотека

Да бисте претраживали више датотека помоћу имена датотека или џокер знакова, унесите:

$ греп -иц киз мифиле мифиле1 мифиле2 мифиле3
$ греп -ин киз ми * 
# подудара имена датотека која почињу са 'ми'

Вежба И

  1. Прво избројите колико редова постоји у датотеци / етц / пассвд.
Савет: користите вц -л / етц / пассвд
  1. Сада пронађите све појаве у тексту вар у датотеци / етц / пассвд.
  2. Пронађите колико редова у датотеци садржи текст
  3. Пронађите колико редова НЕ садржи текст вар.
  4. Пронађите унос за своју пријаву у / етц / пассвд

Решења за вежбање могу се наћи на крају овог чланка.

Коришћење регуларних израза

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

Доступни специјални знакови укључују:

^ Почетак линије
$ Крај реда
. Било који знак (осим \ н новог реда)
* 0 или више претходних израза
\ Претходи симболу чини га дословним карактером

Имајте на уму да *, који се у командној линији може користити за подударање са било којим бројем знакова, укључујући ниједан, јесте не овде се користи на исти начин.

Такође обратите пажњу на употребу наводника у следећим примерима.

Примери

Да бисте пронашли све редове који почињу са текстом помоћу знака ^:

$ греп '^ киз' мој фајл

Да бисте пронашли све редове који се завршавају текстом помоћу знака $:

$ греп 'киз $' мој фајл

Да бисте пронашли линије које садрже низ који користи и знакове ^ и $:

$ греп '^ киз $' мој фајл

Да бисте пронашли линије помоћу . да се подудара са било којим ликом:

$ греп '^ к.з 'мифиле

Да бисте пронашли линије помоћу * које одговарају 0 или више претходних израза:

$ греп '^ ки * з' мој фајл

Да бисте пронашли линије помоћу .* да одговара 0 или више знакова:

$ греп '^ к.* з 'мифиле

Да бисте пронашли линије помоћу \ да избегне знак *:

$ греп '^ к \ * з' мифиле

Да бисте пронашли знак \ користите:

$ греп '\\' мој фајл

Израз греп - егреп

Тхе греп наредба подржава само подскуп доступних регуларних израза. Међутим, команда егреп:

Имајте на уму да изрази морају бити затворени у пар наводника.

Да бисте користили боје, користите -цолор или поново креирајте алиас:

$ алиас егреп = 'егреп --боја'

Да би се трагало за више њих регуларни израз тхе егреп наредба може бити написана у више редова. Међутим, то се може урадити и помоћу ових посебних знакова:

|. | Измена, било једна или друга
(…) Логичко груписање дела израза
$ егреп '(^ роот | ^ ууцп | ^ пошта)' / етц / пассвд

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

Следећа команда ће не раде, иако се не приказује порука, јер је основни греп наредба не подржава све регуларне изразе:

$ греп '(^ роот | ^ ууцп | ^ пошта)' / етц / пассвд

Међутим, на већини Линук система наредба греп -Е је исто што и коришћење егреп:

$ греп -Е '(^ роот | ^ ууцп | ^ пошта)' / етц / пассвд

Коришћење филтера

Цевоводи је процес слања резултата једне наредбе као улаза у другу наредбу и један је од најмоћнијих доступних Линук алата.

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

У следећем примеру, стандардни излаз из лс -л се прослеђује као стандардни улаз у греп команда. Излаз из греп наредба се затим предаје као улаз у више команда.

Ово ће приказати само директоријуме у / итд:

$ лс -л / етц | греп '^ д' | више

Следеће команде су примери употребе филтера:

$ пс -еф | греп црон

$ вхо | греп кдм

Пример датотеке

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

Користите уређивач као што је нано или вим за копирање доњег текста у датотеку која се зове људи:

Лични Ј.Смитх 25000
Лични Е.Смитх 25400
Обука А.Браон 27500
Обука Ц.Бровен 23400
(Администратор) Р.Брон 30500
Роба ван Т.Смитх 30000
Лични Ф.Јонес 25000
обука * Ц.Еванс 25500
Излазак робе В.Папа 30400
Приземље Т.Смитхе 30500
Лични Ј.Малер 33000

Вежба ИИ

  1. Прикажите датотеку људи и испитати његов садржај.
  2. Пронађите све редове који садрже низ Смитх у досијеу људи.Савет: користите наредбу греп, али имајте на уму да је према подразумеваним подешавањима велика и мала слова.
  3. Направите нову датотеку, нпеопле, која садржи све редове који почињу са низом Лични у досијеу људи.Савет: користите наредбу греп са>.
  4. Потврдите садржај датотеке нпеопле навођењем датотеке.
  5. Сада додајте све редове тамо где се текст завршава низом 500 у датотеци људи у датотеку нпеопле.Савет: користите наредбу греп са >>.
  6. Поново потврдите садржај датотеке нпеопле навођењем датотеке.
  7. Пронађите ИП адресу сервера која је сачувана у датотеци / етц / хостс.Савет: користите наредбу греп са $ (име хоста)
  8. Користите егреп да се издвоји из / етц / пассвд датотеке фајл линије које садрже лп или своје ИД корисник.

Решења за вежбање могу се наћи на крају овог чланка.

Више регуларних израза

Регуларни израз се може сматрати заменом на стероидима.

Постоји једанаест знакова са посебним значењима: почетни и затварајући углати заграде [], коса црта \, знак ^, знак долара $, тачка или тачка ., окомита трака или симбол цеви |, знак питања ?, звездица или звездица *, знак плус + и округла заграда за отварање и затварање . Ови посебни знакови се често називају и метазнаковима.

Ево комплетног скупа специјалних знакова:

^ Почетак линије
$ Крај реда
. Било који знак (осим \ н новог реда)
* 0 или више претходних израза
|. | Измена, било једна или друга
[…] Експлицитни скуп знакова који се подударају
+ 1 или више претходних израза
? 0 или 1 претходног израза
\ Претходи симболу чини га дословним карактером
Експлицитна нотација квантификатора
(…) Логичко груписање дела израза

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

Да бисте пронашли линије помоћу |. | да се подудара са било којим изразом:

$ егреп 'ккз | кзз' мој фајл

Да бисте пронашли линије помоћу | да бисте се подударали са било којим изразом у низу, такође користите ():

$ егреп '^ к (Из | из)' мој фајл

Да бисте пронашли линије помоћу [] за подударање са било којим знаком:

$ егреп '^ к [Ии] з' мој фајл

Да бисте пронашли линије помоћу [] да се НЕ подударају са било којим знаком:

$ егреп '^ к [^ Ии] з' мој фајл

Да бисте пронашли линије помоћу * које одговарају 0 или више претходних израза:

$ егреп '^ ки * з' мој фајл

Да бисте пронашли линије помоћу + које одговарају 1 или више претходних израза:

$ егреп '^ ки + з' мој фајл

Да бисте пронашли линије помоћу ? да се подудара са 0 или 1 претходног израза:

$ егреп '^ ки?з 'мифиле

Вежба ИИИ

  1. Пронађите све редове који садрже имена Еванс или Малер у досијеу људи.
  2. Пронађите све редове који садрже имена Смитх, Смитх или Смитхе у досијеу људи.
  3. Пронађите све редове који садрже имена Бровн, Бровен или Брон у досијеу људи.Ако имате времена:
  4. Пронађите линију која садржи низ (админ), укључујући заграде у датотеци људи.
  5. Пронађите датотеку која садржи знак * у датотеци пеопле.
  6. Комбинујте 5 и 6 горе да бисте пронашли оба израза.

Још примера

Да бисте пронашли линије помоћу . и * за подударање са било којим скупом знакова:

$ егреп '^ ки.* з 'мифиле

Да бисте пронашли линије помоћу за подударање Н броја знакова:

$ егреп '^ ки 3 з' мој фајл
$ егреп '^ ки 4 з' мој фајл

Да бисте пронашли линије помоћу за подударање Н или више пута:

$ егреп '^ ки 3, з' мој фајл

Да бисте пронашли линије помоћу како би се подударали Н пута, али не више од М пута:

$ егреп '^ ки 2,3 з' мој фајл

Закључак

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

Следећи кораци

Надам се да ћете овде стечено знање добро искористити. Испробати греп наредбе на властитим подацима и запамтите, регуларни изрази како су овде описани могу се користити у истом облику у ви, сед и авк!

Решења за вежбање

Вежба И

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

греп -ц вар / етц / пассвд

Пронађите колико редова НЕ садржи текст вар.

греп -цв вар / етц / пассвд

Пронађите унос за своју пријаву у / етц / пассвд датотека
греп кдм / етц / пассвд

Вежба ИИ

Прикажите датотеку људи и испитати његов садржај.
$ мачка људи
Пронађите све редове који садрже низ Смитх у досијеу људи.
$ греп 'Смитх' људи
Направите нову датотеку, нпеопле, садржи све редове који почињу низом Лични у људи датотека
$ греп '^ Лични' људи> људи
Потврдите садржај датотеке нпеопле навођењем датотеке.
$ мачка људи
Сада додајте све редове тамо где се текст завршава низом 500 у досијеу људи у датотеку нпеопле.
$ греп '500 $' људи >> људи
Поново потврдите садржај датотеке нпеопле навођењем датотеке.
$ мачка људи
Пронађите ИП адресу сервера која је сачувана у датотеци / етц / хостс.
$ греп $ (име хоста) / етц / хостс
Користите егреп да се издвоји из / етц / пассвд датотеке фајл линије које садрже лп или свој кориснички ИД.
$ егреп '(лп | кдм :)' / етц / пассвд

Вежба ИИИ

Пронађите све редове који садрже имена Еванс или Малер у досијеу људи.
$ егреп 'Еванс | Малер' људи
Пронађите све редове који садрже имена Смитх, Смитх или Смитхе у досијеу људи.
$ егреп 'См (и | и) тхе?' људи
Пронађите све редове који садрже имена Браон, Бровен или Брон у досијеу људи.
$ егреп 'Бров?е?људи
Пронађите линију која садржи низ (админ), укључујући заграде у датотеци људи.

$ егреп '\ (Админ \)' људи

Пронађите линију која садржи лик * у досијеу људи.
$ егреп '\ *' људи
Комбинујте 5 и 6 горе да бисте пронашли оба израза.

$ егреп '\ (Администратор \) | \ *' људи


Како да обрнете смер померања миша и додирних табли у оперативном систему Виндовс 10
Миш и Тоуцхпадрачунарство не само да олакшава рад, већ и ефикасније и мање времена. Не можемо замислити живот без ових уређаја, али ипак је чињеница д...
Како променити показивач миша и величину, боју и шему курсора на Виндовс 10
Показивач миша и курсор у оперативном систему Виндовс 10 су врло важни аспекти оперативног система. То се може рећи и за друге оперативне системе, так...
Бесплатни и отворени кодни покретачки програми за развој Линук игара
Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...