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
Quyidagi bolalar kitoblari to'plamlari yozilgan kitoblar matnli faylni tasavvur qiling:
- Robin Hood
- Qizil qalpoqcha
- Peter Pan
- Goldilocks va uchta ayiq
- Qor-oq va ettita mitti
- Pinnochio
- The Hat In The Hat
- Uchta kichik cho'chqa
- Gruffalo
- Charli va shokolad fabrikasi
Sarlavhada barcha kitoblarni "The" so'zi bilan topish uchun siz quyidagi sintaksisini ishlatasiz:
grep Kitoblar
Quyidagi natijalar qaytariladi:
- Goldilocks va uchta ayiq
- Qor-oq va ettita mitti
- The Hat In The Hat
- Uchta kichik cho'chqa
- Gruffalo
- Charli va shokolad fabrikasi
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
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- varoidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
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:
- everydaylinuxuser.com/about.html
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:
- Blackpool
- Liverpul
- Manchester Siti
- Lester Siti
- Manchester Yunayted
- Nyukasl Yunayted
- Manchester Yunayted Manchester Yunayted
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:
- Aberdeen Shotlandiya
- Glasgow Shotlandiya
- liverpullik england
- Colwyn ko'rfazida
- London england
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:
- Aberdeen Shotlandiya
- Inverness Shotlandiya
- liverpullik england
- Colwyn bay Uales
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:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
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