Linux grep komandiyasining namunalari

Kirish

Linux grep buyrug'i kirishni filtrlash usuli sifatida ishlatiladi.

GREP Global Regular Expression Printerni anglatadi va shuning uchun uni samarali ishlatish uchun muntazam so'zlar haqida ba'zi ma'lumotlarga ega bo'lishingiz kerak.

Ushbu maqolada grep buyrug'ini tushunishga yordam beradigan bir qator misollarni keltiraman.

01dan 09gacha

GREP-dan foydalanib faylda bir stringni qidirish

Linux grep komandasi.

Quyidagi bolalar kitoblari to'plamlari yozilgan kitoblar matnli faylni tasavvur qiling:

Sarlavhada barcha kitoblarni "The" so'zi bilan topish uchun siz quyidagi sintaksisini ishlatasiz:

grep Kitoblar

Quyidagi natijalar qaytariladi:

Har holda "The" so'zi alohida ta'kidlanadi.

Qidiruvni katta-kichikligi sezgirligini unutmang, shuning uchun sarlavhalaridan biri "The" o'rniga "the" bo'lsa, u qaytarilmas edi.

Ishni e'tiborsiz qoldirish uchun siz quyidagi kalitni qo'shishingiz mumkin:

greplarni kitoblar - yunon-ish

Siz -i-ni quyidagicha foydalanishingiz mumkin:

grep -i kitoblar

02 ning 09

Jild belgilarni ishlatib, faylda bir mag'lubiyatni qidiring

Grep buyrug'i juda kuchli. Natijalarni filtrlash uchun ko'plab naqsh moslashtirish metodlarini qo'llashingiz mumkin.

Ushbu misolda joker belgilarni ishlatib, faylga qanday qilib qo'ng'iroq qilishni ko'rsataman.

Quyidagi Scottish joy nomlari bilan joylar deb atalgan faylingiz borligini tasavvur qiling:

aberdeen

aberystwyth

aberlour

Inverurie

inverness

Newburgh

yangi kiyik

yangi galloway

Glasgow

Edinburgh

Barcha joylarni inver bilan birga topish uchun quyidagi sintaksisini foydalaning:

grep inver * joylari

Yulduz belgisi (*) joker belgisi 0 yoki juda ko'p. Shuning uchun agar sizda inver deb ataladigan joy bormi yoxud inverness deb nomlangan joy bo'lsa, ikkalasi ham qaytarib berilishi kerak.

Siz foydalanishingiz mumkin bo'lgan boshqa joker (.). Buni bitta harfga mos kelish uchun foydalanishingiz mumkin.

grep inver.r joylari

Yuqoridagi buyruq inverurie va inverary deb ataladigan joylarni topishi mumkin, ammo bu ishni topa olmaydi, chunki faqat bir vaqtning o'zida ikkala r-ning o'zaro belgilari bo'lishi mumkin.

Joker davr foydali, ammo siz izlayotgan matnning bir qismi sifatida muammolar paydo bo'lishi mumkin.

Masalan, domen nomlarining ushbu ro'yxatiga qarang

All about.coms ni topish uchun siz quyidagi sintaksisini ishlatishingiz mumkin:

grep * haqida * domen nomlari

Agar ro'yxatda quyidagi nom berilgan bo'lsa, yuqoridagi buyruqlar tushib ketadi:

Shuning uchun quyidagi sintaksisini sinab ko'rishingiz mumkin:

grep * about.com domen nomlari

Quyidagi ismga ega domen mavjud bo'lmaganda, u ishlaydi:

aboutycom.com

"About.com" atamasini chindan ham qidirish uchun siz quyidagi nuqtadan qochishingiz kerak:

grep * domen nomlari haqida

Sizga ko'rsatadigan joker belgilar - bu nol yoki bitta belgi bo'lgan savol belgisidir.

Masalan:

grep-bay placenames

Yuqoridagi amr aberdeen, aberist yoki hatto bervikga qaytadi.

03 dan 09 gacha

Grepni ishlatish boshlanishida va satr oxirida satrlarni izlash

Karat (^) va dollar ($) belgisi satrning boshida va oxirida naqshlarni qidirishga imkon beradi.

Tasavvur qiling, sizda futbol nomi deb ataladigan fayl bor:

Agar siz Manchester bilan boshlangan barcha jamoalarni topmoqchi bo'lsangiz, quyidagi sintaksisdan foydalanishingiz mumkin:

Manchester Yunayted jamoalari

Yuqoridagi komanda «Manchester Siti» va «Manchester Yunayted» ni qaytarib beradi, ammo «Manchester Yunayted» emas.

Shu bilan bir qatorda, Yunayted bilan tugagan barcha jamoalarni quyidagi sintaksisdan foydalanib topishingiz mumkin:

grep United $ guruhlari

Yuqorida ko'rsatilgan buyruq "Manchester Yunayted" va "Nyukasl Yunayted" ni qaytarib beradi, ammo "Manchester Yunayted" emas.

04 da 09

Grep-dan foydalanib o'yinlarning sonini hisoblash

Agar grep yordamida naqshga mos keladigan chiziqlarni qaytarishni istamasangiz, faqat sizda qancha sintaksisini ishlatish mumkinligini bilishni xohlaysiz:

grep -c naqshli inputfile

Agar naqsh ikki barobarga teng bo'lsa, 2 raqami qaytariladi.

05 dan 09 gacha

Grep yordamida mos kelmaydigan barcha shartlarni topish

Quyidagi mamlakatlarda joy nomlari ro'yxatini tasavvur qiling:

Ehtimol, siz Colwyn ko'rfazida u bilan bog'liq hech qanday davlat yo'qligini sezgan edingiz.

Bir mamlakat bilan barcha joylarni qidirish uchun quyidagi sintaksisini ishlatishingiz mumkin:

grep yer $ joylar

Natijalar qaytib kelganda, hamma joyda Colwyn ko'rfazi bo'ladi.

Bu, albatta, faqat erlarda tugaydigan joylar uchun (juda ilmiy) ishlaydi.

Quyidagi sintaksisini foydalanib, tanlovni o'zgartirishingiz mumkin:

grep -v yer $ joylar

Bu er bilan yakun topmagan hamma joylarni topadi.

06 dan 09 gacha

Grep dasturidan fayllardagi bo'sh satrlarni qanday topish mumkin

Tasavvur qiling, faylni quyidagi tarzda bo'sh satrni topishda to'xtatadigan uchinchi tomon dasturidan foydalanadigan kirish faylingiz bor:

Dastur liverpuldan keyin chiziqqa chiqqanda, kolvin bekasi ma'nosini to'la to'xtatib qo'yadi.

Quyidagi sintaksisi bilan bo'sh satrlarni qidirish uchun grep-dan foydalanishingiz mumkin:

grep ^ $ joylar

Afsuski, bu juda foydali emas, chunki u faqat bo'sh satrlarni qaytaradi.

Albatta, faylning quyidagi kabi haqiqiyligini tekshirish uchun bo'sh satrlar sonini hisobga olishingiz mumkin:

grep -c ^ $ joylari

Biroq, ularni almashtirish uchun bo'sh satrlari bo'lgan satrlarni bilish foydali bo'ladi. Buni quyidagi buyruq bilan qilishingiz mumkin:

grep -n ^ $ joylari

07 of 09

Grep dan foydalanib katta harflar yoki kichik harflar satrlarini qidirish

Grep dan foydalanib, faylda qaysi satrlarda katta harflar mavjudligini quyidagi sintaksisdan foydalanib aniqlash mumkin:

grep "[AZ]" fayl nomi

Kvadrat qavslar [] belgilar oralig'ini aniqlashga imkon beradi. Yuqoridagi misolda u A va Z o'rtasidagi har qanday belgiga mos keladi.

Shuning uchun kichik harflarni tanlash uchun quyidagi sintaksisini ishlatishingiz mumkin:

grep '[oz]' fayl nomi

Agar faqat harflar va raqamlar yoki boshqa belgilar bilan mos kelmaslikni xohlasangiz, quyidagi sintaksisini ishlatishingiz mumkin:

grep "[a-zA-Z]" fayl nomi

Raqamlarni quyidagi kabi qilishingiz mumkin:

grep '[0-9]' fayl nomi

08 of 09

Grep dan foydalanib, takrorlanadigan naqshlarni qidirmoqdamiz

Ikki nusxadagi nusxani qidirish uchun buklangan kataklardan {} foydalanishingiz mumkin.

Tasavvur qiling, sizda telefon raqamlari mavjud bo'lgan fayl bor:

Bilasizmi, raqamning birinchi qismi uchta raqamli bo'lishi kerak va siz bu naqshga mos kelmaydigan qatorlarni topmoqchi bo'lamiz.

Oldingi misoldan [0-9] barcha raqamlarni faylga qaytarishini bilasiz.

Bu holatda biz uchta raqamdan boshlangan chiziqlarni (-) boshlashni istaymiz. Buni quyidagi sintaksis bilan qilishingiz mumkin:

grep "^ [0-9] [0-9] [0-9] -" raqamlar

Oldingi misollardan bilib olganimizdek, karat (^) liniyasi quyidagi naqsh bilan boshlanishi kerakligini anglatadi.

[0-9] 0 dan 9 gacha bo'lgan har qanday sonni izlaydi. Bu uch marta kiritilgani uchun u 3 ta raqamga mos keladi. Nihoyat, chiziq uchta raqamni egallashi kerakligini ko'rsatish uchun chiziqcha bor.

Jingalak qavslardan foydalanib, siz qo'ng'iroqni kichikroq qilib belgilashingiz mumkin:

grep "^ [0-9] \ {3 \} -" raqamlar

Chiziq {kvadratchadan oddiy iboraning bir qismi sifatida ishlaydi, lekin mohiyatan bu 0 dan 9 gacha bo'lgan har qanday sonni uch marta anglatadi [0-9] {3}.

Jingalak qavslar quyidagi kabi ishlatilishi mumkin:

{5,10}

{5,}

{5,10} aranayotgan belgi kamida 5 marta takrorlanishi kerak, ammo 10dan ortiq bo'lmasligi kerak, demak {5,} belgining kamida 5 marta takrorlanishi kerak, lekin u bundan ham ortiq bo'lishi mumkin.

09 dan 09 gacha

Grepni ishlatish bilan boshqa komandalardagi chiqimdan foydalanish

Shunday qilib, biz individual fayllar ichida naqsh solishtirishga qaradik, lekin grep naqshni moslashtirish uchun kirish sifatida boshqa buyruqlar yordamida chiqishni ishlatishi mumkin.

Buning eng yaxshi namunasi, faol jarayonlarni ro'yxatlaydigan ps komandasini ishlatishdir.

Masalan, quyidagi buyruqni bajaring:

ps -f

Tizimdagi ishlaydigan barcha jarayonlar ko'rsatiladi.

Siz ma'lum bir ishlaydigan jarayonni qidirish uchun grep-dan foydalanishingiz mumkin:

ps -f | grep firefox

Xulosa

Grep buyrug'i asosiy Linux funktsiyasidir va u yaxshi o'rganishga loyiqdir, chunki terminaldan foydalanganda fayllar va jarayonlarni qidirishda hayotingizni ancha osonlashtiradi.