греп

Проналажење низова у текстуалним датотекама помоћу греп-а са регуларним изразом

Проналажење низова у текстуалним датотекама помоћу греп-а са регуларним изразом
греп је један од најпопуларнијих алата за претраживање и проналажење низова у текстуалној датотеци. Назив 'греп' потиче од наредбе у сада застарјелом Уник ед едитор алату за уређивање линија - ед наредба за претраживање глобално кроз датотеку за регуларни израз и онда штампање те линије је било г / ре / п, где је ре био регуларни израз који бисте користили. На крају је написана наредба греп која врши претрагу датотеке када не користи ед.

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

Пример 1: Пронађите једног закупца у текстуалној датотеци

Да бисте у датотеци „књига“ избацили редове који садрже знак „$“, откуцајте:

$ греп '\ $' књига

Пример 2: Пронађите појединачни низ у текстуалној датотеци

За излаз редова у датотеци „књига“ која садржи низ „14 УСД“.99 ', тип:

$ греп '\ $ 14 \.99 'књига

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

Да бисте у датотеци „књига“ избацили редове који садрже знак „\“, откуцајте:

$ греп '\\' књига

Пример 4: Поклапање линија које почињу са одређеним текстом

Користите 'ˆ' у регуларном изразу да бисте означили почетак реда.

Унесите све редове у '/ уср / дицт / вордс' који почињу са 'про', унесите:

$ греп 'ˆпро' / уср / дицт / вордс

Да бисте избацили све редове у датотеци „књига“ који почињу текстом „на почетку“, без обзира на велика и мала слова, унесите:

$ греп -и 'у почетку' књига

БЕЛЕШКА: Ови регуларни изрази цитирани су знаковима '; то је зато што се неке љуске иначе понашају према знаку „ˆ“ као према посебном „метазнаку“

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

Технички гледано, обрасци речи или фразе су регуларни изрази - само врло једноставни. У регуларном изразу, већина знакова - укључујући слова и бројеве - представља себе. На пример, образац регуларног израза 1 одговара низу '1' и обрасцу дечко подудара се са низом „дечак“.

Постоји низ резервисаних знакова који се називају метазнакови и који се не представљају у регуларном изразу, али имају посебно значење које се користи за изградњу сложених образаца. Ови мета карактери су следећи: ., *, [, ], ˆ, $ и \. Добро је напоменути да су такви мета карактери уобичајени међу готово свим уобичајеним и посебним Линук дистрибуцијама. Ево доброг чланка који покрива посебна значења метазнака и даје примере њихове употребе.

Пример 5: Поклапање линија које се завршавају са одређеним текстом

Користите „$“ као последњи знак цитираног текста да бисте се поклапали с тим текстом на крају реда. Да бисте у датотеци извели редове који се завршавају знаком ускличника, унесите:

$ греп '!$ 'иде

Пример 6: Подударање линија одређене дужине

Да бисте подударали линије одређене дужине, користите тај број '.'знакови између' ˆ 'и' $ '- на пример, да бисте се подударали са свим линијама које су широке два знака (или колоне), користите' ˆ ... $ 'као регуларни израз за претрагу.

Унесите све редове у '/ уср / дицт / вордс' који су тачно три знака, укуцајте:

$ греп 'ˆ… $' / уср / дицт / вордс

За дуже линије корисније је користити другу конструкцију: 'ˆ.\ број \ $ ', где је број одговарајући број линија. Користите ',' да одредите опсег бројева.

Унесите све редове у '/ уср / дицт / вордс' који имају тачно дванаест знакова, унесите:

$ греп 'ˆ.\ 12 \ $ '/ уср / дицт / вордс

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

$ греп 'ˆ.\ 22, \ $ '/ уср / дицт / вордс

Пример 7: Подударање линија које садрже било који регуларни израз

Да бисте подударали линије које садрже било који од одређеног броја регуларних израза, наведите сваки од регуларних израза који ће се тражити између оператора наизменичног рада ('\ |') као регуларни израз за претрагу. Редови који садрже било који од датих регуларних израза ће се приказати.

Да бисте избацили све редове у „плаибои“ који садрже или обрасце „књига“ или „колач“, унесите:

$ греп 'тхе боок \ | цаке' плаибои

Пример 8: Подударање линија које садрже све неке регуларне изразе

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

Да бисте избацили све редове у „плејлисту“ која садржи и обрасце „обала“ и „небо“, без обзира на случај, унесите:

$ греп -и 'тхе схоре' плејлиста | греп -и небо

Пример 9: Подударање линија које садрже само одређене знакове

За подударање линија које садрже само одређене знакове, користите регуларни израз 'ˆ [знакови] * $', где се знакови подударају.  Да бисте у '/ уср / дицт / вордс' избацили редове који садрже само самогласнике, унесите:

$ греп -и 'ˆ [аеиоу] * $' / уср / дицт / вордс

Опција '-и' одговара знаковима без обзира на велика и мала слова; тако да се у овом примеру сви знакови самогласника подударају без обзира на падеж.

Пример 10: Проналажење фраза без обзира на размак

Један од начина претраживања фразе која би се могла појавити са додатним размацима између речи или преко реда или прелома странице је уклањање свих додатака линија и додатних размака из уноса, а затим греп то. Да бисте то урадили, ставите улаз на тр са "\ р \ н: \> \ | -" као аргумент опцији '-д' (уклањање свих прелома линија са улаза); цев до фмт филтера са опцијом '-у' (излаз текста са равномерним размаком); и цев за греп са шаблоном за тражењем.

Да бисте претражили низ прелома редова за низ „истовремено са„ у датотеци „документи“, унесите:

$ цат доцс | тр -д '\ р \ н: \> \ |
-'| фмт -у | греп 'истовремено са'

Резиме

У овом чланку смо прегледали 10 практичних примера употребе наредбе Греп Линук за претраживање и проналажење низова у текстуалној датотеци. Успут смо научили како да користимо регуларне изразе заједно са Грепом за спровођење сложених претрага текстуалних датотека. До сада сте имали бољу идеју о томе колико су моћне функције претраживања Линук-а.

Ево додатних ресурса за оне који су заинтересовани да сазнају више о Линук програмирању:

Ресурси за системске администраторе

Ресурси за Линук Кернел програмера

Речник Линук система датотека

Свеобухватан преглед рада Линук система датотека и директорија

Како развити игру на Линуку
Пре деценију, није много корисника Линука предвидело да ће њихов омиљени оперативни систем једног дана бити популарна платформа за играње комерцијални...
Портови комерцијалних игара отвореног кода
Бесплатне рекреације покретачких игара са отвореним кодом и више платформи могу се користити за играње старих, као и неких прилично недавних наслова и...
Најбоље игре командне линије за Линук
Командна линија није само ваш највећи савезник када користите Линук - она ​​такође може бити извор забаве јер је можете користити за играње многих заб...