Linux grep komandasının nümunələrini istifadə edir

Giriş

Linux grep əmri girişin filtrləşdirilməsi üçün istifadə olunur.

GREP Global Regular Expression Printer-ə istinad edir və buna görə də səmərəli istifadə etmək üçün müntəzəm ifadələr haqqında bəzi biliklərə malik olmalıdır.

Bu yazıda mən sizə grep əmrini anlamağa kömək edəcək bir sıra nümunələr göstərəcəyəm.

01/09

GREP istifadə edərək bir faylda bir dize axtarmaq üçün necə

Linux grep komandası.

Aşağıdakı uşaq kitabları ilə kitablar adlı bir mətn faylınız olduğunu düşünün:

Başlıqdakı "The" sözü ilə bütün kitabları tapmaq üçün aşağıdakı sözdizimdən istifadə edəcəyiniz:

kitablar

Aşağıdakı nəticələr qaytarılacaq:

Hər halda "The" sözü vurğulanacaq.

Qeyd edək ki, axtarışın həcmi həssasdır, belə ki başlıqlardan biri "The" əvəzinə "əvəzinə" malikdirsə, onda geri qaytarılmayacaqdır.

Vəziyyəti göz ardı etmək üçün aşağıdakı keçid əlavə edə bilərsiniz:

grep kitablar - layout-case

Siz həmçinin -i keçidini aşağıdakı kimi istifadə edə bilərsiniz:

grep -i kitablar

02/09

Joker kartları istifadə edərək faylda bir dize axtarmaq

Grep əmri çox güclüdür. Nəticələri filtrelemek üçün çoxlu model eşleme üsullarından istifadə edə bilərsiniz.

Bu nümunədə, joker kartları istifadə edərək faylda bir simli axtarışın necə göstərəcəyini göstərəcəyəm.

Aşağıdakı İskoç yer adları ilə yerlər adlanan bir faylınız olduğunu düşünün:

aberdeen

aberystwyth

aberlour

inverurie

inverness

Newburgh

yeni geyik

yeni galloway

Glasgow

edinburgh

İnver ilə bütün yerləri adda tapmaq istəyirsinizsə aşağıdakı sözdizimini istifadə edin:

grep inver * yerləri

Yulduz (*) joker 0 və ya bir çoxunu təşkil edir. Buna görə də inver deyilən bir yer və ya inverness deyilən bir yer varsa, həm də qaytarılacaq.

Istifadə edə biləcək başqa bir joker (.) Dövrüdür. Bunu bir məktubla uyğunlaşdırmaq üçün istifadə edə bilərsiniz.

grep inver.r yerləri

Yuxarıdakı komanda inverurie və inverary adlanan yerləri tapacaqdır, lakin yalnışlıq tapmayacaq, çünki yalnız iki dövr arasındakı bir joker bir müddət ola bilər.

Joker dövrlər faydalıdır, ancaq siz axtarış etdiyiniz mətnin bir hissəsi kimi bir problem yarada bilər.

Məsələn, bu domen adlarının siyahısına baxın

Yalnızca aşağıdakı sözdizimini istifadə edərək axtarış edə bilərsiniz:

grep * haqqında * domainnames

Siyahıda aşağıdakı adı varsa, yuxarıdakı komanda aşağı düşəcək:

Buna görə, aşağıdakı sözdizimini cəhd edə bilərsiniz:

grep * about.com domainnames

Aşağıdakı adı olan bir domen olmadığı təqdirdə bu yaxşı işləyərdi:

haqqında

Haqqında about.com axtarış üçün həqiqətən aşağıdakı nöqtədən qaçmaq lazımdır:

grep * haqqında .com domainnames

Sizə göstərmək üçün son joker, sıfır və ya bir xarakterli sual işarəsidir.

Misal üçün:

grep? ver placenames

Yuxarıda göstərilən əmr aberdeen, aberystwyth və ya hətta berwick dönərdi.

03 09

Grep istifadə edərək başlanğıcda və sətir sonunda sətirlər axtarın

Karat (^) və dollar ($) simvolu satırların başlanğıc və sonlarında nümunələri axtarmaq imkanı verir.

Aşağıdakı komandanın adları ilə futbol adlanan bir faylınız olduğunu düşünün:

Əgər Manchester ilə başlayan bütün komandaları tapmaq istəyirsinizsə, aşağıdakı sözdizimdən istifadə edərdiniz:

Məşqçi qrupları

Yuxarıda göstərilən komanda "Mançester Yunayted" və "Mançester Yunayted" i qayıdırdı.

Alternativ olaraq, aşağıdakı sözdizimini istifadə edərək United ilə bitən bütün komandaları tapa bilərsiniz:

grep United $ qrupları

Yuxarıda göstərilən komanda Manchester United və Nyukasl Yunanıstanı geri qaytaracaqdı, amma FC United Manchester.

04/09

Grep istifadə edərək matçların sayını hesablamaq

Grep istifadə edərək bir nümunə uyğun olan faktiki xəttləri qayıtmaq istəmirsinizsə, ancaq sadəcə neçə sintaksis istifadə edə biləcəyinizi bilmək istəyirsən:

grep -c model giriş falı

Nümunə iki dəfə uyğunlaşsaydı, 2 nömrəsi geri veriləcəkdi.

05/09

Grep istifadə edərək uyğun olmayan bütün şərtləri tapmaq

Aşağıdakı kimi qeyd olunan ölkələrlə yer adları siyahısının olduğunu düşünün:

Colwyn bayının bununla əlaqəli heç bir ölkəyə malik olmadığını fərq etmiş ola bilərsiniz.

Bir ölkə ilə bütün yerləri axtarmaq üçün aşağıdakı sözdizimini istifadə edə bilərsiniz:

grep land $ yerlər

Bu nəticələr, colwyn bayı istisna olmaqla, bütün yerlər olacaqdır.

Bu, əlbəttə ki, torpaqda bitən yerlərə (çətin elmi) işləyir.

Aşağıdakı sözdizimini istifadə edərək seçimi ters edə bilərsiniz:

grep -v land $ yerlər

Bu torpaq ilə bitməmiş bütün yerləri tapa bilər.

06-dan 09-dək

Grep istifadə edərək dosye boş boşluqlar tapmaq

Boş bir xətt aşağıdakı kimi tapdıqda fayl oxunmasını dayandıran üçüncü tərəf tətbiqindən istifadə edən bir giriş faylı var:

Tətbiq liverpooldan sonra xəttə çıxdıqda, mənasını oxu dayandırmaq colwyn bay tamamilə buraxılmışdır.

Aşağıdakı sözdizimlə boş xətləri axtarmaq üçün grep istifadə edə bilərsiniz:

grep ^ $ yerləri

Təəssüf ki, bu xüsusilə faydalı deyil, çünki yalnız boş xətləri qaytarır.

Əlbəttə, faylın aşağıdakı kimi etibarlı olub-olmadığını yoxlamaq üçün boş satır sayının hesabını əldə edə bilərsiniz:

grep -c ^ $ yerlər

Bununla yanaşı, onları əvəz edə bilmək üçün boş bir xətt olan satır nömrələrini bilmək daha faydalı olardı. Bunu aşağıdakı əmri ilə edə bilərsiniz:

grep -n ^ $ yerlər

07-də ​​09

Grep istifadə edərək, böyük və ya kiçik harfli simvollar üçün axtarış

Grep istifadə edərək, bir dildə olan xətlərin aşağıdakı simvolları istifadə edərək, böyük simvolları müəyyən edə bilərsiniz:

grep '[AZ]' filename

Kvadrat mötərizələr [], simvol aralığını təyin etməyə imkan verir. Yuxarıda göstərilən misalda A və Z arasındakı hər hansı bir xarakter daşıyır.

Bu səbəbdən kiçik simvolları uyğunlaşdırmaq üçün aşağıdakı sözdizimini istifadə edə bilərsiniz:

grep '[az]' filename

Yalnız məktublar, ədədlər və ya digər simvollarla uyğunlaşmaq istəyirsinizsə, aşağıdakı sözdizimdən istifadə edə bilərsiniz:

grep '[a-zA-Z]' filename

Nömrələri ilə eyni şəkildə edə bilərsiniz:

grep '[0-9]' fayl adı

08-də 09

Grep istifadə edərək təkrarlanan naxışları axtarırsınız?

Təkrarlanan nümunəni axtarmaq üçün əyri mötərizədən {} istifadə edə bilərsiniz.

Aşağıdakı kimi telefon nömrələri olan bir faylınız olduğunu düşünün:

Bildiyiniz kimi, nömrənin birinci hissəsi üç rəqəm olmalıdır və bu naxışa uyğun olmayan xəttləri tapmaq istəyir.

Əvvəlki nümunədən bildiyiniz kimi [0-9] bir faylda bütün nömrələri qaytarır.

Bu halda üç ədəddən başlayaraq bir tire (-) ilə başlayan xətləri istərdik. Bunu aşağıdakı sözdizimlə edə bilərsiniz:

grep "^ [0-9] [0-9] [0-9] -" nömrə

Əvvəlki nümunələrdən bildiyimiz kimi, karat (^) xətt aşağıdakı nümunədən başlayacaq deməkdir.

[0-9] 0 ilə 9 arasında hər hansı bir nömrə axtaracaq. Bu üç dəfə daxil edildiyi üçün bu 3 ədədlə eşleşir. Nəhayət, bir tirein üç ədədə nail olması lazım olduğunu ifadə etmək üçün bir tire var.

Kıvırılan mötərizədən istifadə edərək, axtarışı aşağıdakı kimi daha kiçik hala gətirə bilərsiniz:

grep "^ [0-9] \ {3 \} -" nömrə

Çizgi {{bracket} normal ifadənin bir hissəsi kimi işləyir, amma bu, nə deməkdir [0-9] {3} 0'dan 9 dəfə arasında üç dəfə deməkdir.

Buruq parantezlər də aşağıdakı kimi istifadə edilə bilər:

{5,10}

{5,}

{5,10}, axtarış edilən xarakterin ən azı 5 dəfə təkrarlanması, ancaq 10-dan çox olmaması deməkdir. {5,} isə xarakterin ən azı 5 dəfə təkrarlanması lazım olduğunu ancaq daha çox ola bilər.

09/09

Grep istifadə edərək digər əmrlərdən çıxışın istifadə edilməsi

Hal-hazırda fərdi fayllar içində model eşleme baxdığımıza baxmayaraq grep, nümunə uyğunluğu üçün giriş kimi digər əmrlərdən çıxışı istifadə edə bilər.

Bunun ən yaxşı nümunəsi, aktiv əməliyyatları siyahlayan ps komandanlığı istifadə edir.

Məsələn aşağıdakı əmri çalıştırın:

ps -ef

Sisteminizdə çalışan proseslərin hamısı göstərilir.

Müəyyən bir işləmə prosesini aşağıdakı kimi axtarmaq üçün grep istifadə edə bilərsiniz:

ps-f | | grep firefox

Xülasə

Grep komandası əsas Linux komandasıdır və terminalın istifadə edildiyi zaman faylları və prosesləri axtararkən həyatınızı daha asanlaşdıracaq kimi, öyrənməyə dəyərdir.