Sayt bo'limlari
Muharrir tanlovi:
- Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?
- Ramka kiritish. Ramkalar yaratish. noframes zaxirasini ta'minlash
- Windows tizimini tiklash Hech qachon tugamaydigan avtomatik tiklashga tayyorgarlik
- Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak
- Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilish kerak?
- Qattiq disk kesh xotirasi nima va u nima uchun kerak?Kesh hajmi nima uchun javob beradi?
- Kompyuter nimadan iborat?
- Tizim blokining tuzilishi - qaysi komponentlar kompyuterning ishlashi uchun javobgardir Tizim blokining ichki qurilmalari xususiyatlari
- Qattiq diskni SSD ga qanday o'zgartirish mumkin
- Kirish qurilmalari kiradi
Reklama
Linux muntazam ifodalari. Linux Unix muntazam ifodalarida matn naqshlarini topish uchun Grep va muntazam ifodalardan foydalanish |
Ushbu darslik haqidaSizni Linux Professional Institute imtihon 101 ga tayyorlash uchun moʻljallangan toʻrtta oʻquv qoʻllanmaning ikkinchisi boʻlgan asosiy boshqaruvga xush kelibsiz. Ushbu bo'limda biz naqshlar yordamida fayllardagi matnni qidirish uchun oddiy iboralardan qanday foydalanishni ko'rib chiqamiz. Keyin siz "Ierarxik standart" bilan tanishasiz. fayl tizimi"(Fayl tizimi ierarxiyasi standarti yoki qisqartirilgan FHS), biz sizga qanday topishni ham ko'rsatamiz kerakli fayllar tizimingizda. Shundan so'ng, siz Linuxda jarayonlarni ishga tushirish orqali ularni to'liq nazorat qilishni o'rganasiz fon, jarayonlar ro'yxatini ko'rish, ularni terminaldan ajratish va boshqalar. Quyida quvurlar, qayta yo'naltirishlar va matnni qayta ishlash buyruqlari haqida qisqacha ma'lumot berilgan. Nihoyat, biz sizni Linux yadro modullari bilan tanishtiramiz. Xususan, o'quv qo'llanmaning ushbu qismi (2-qism) bash haqida yaxshi boshlang'ich bilimga ega bo'lgan va Linux boshqaruvining asosiy vazifalari bilan yaxshi tanishishni istaganlar uchun idealdir. Agar siz Linuxda yangi bo'lsangiz, avval ushbu "Qanday qilish" seriyasining 1-qismini tugatishingizni tavsiya qilamiz. Ba'zilar uchun ushbu materialning aksariyati yangi bo'ladi, lekin ko'proq tajribaga ega bo'lganlar uchun Linux foydalanuvchilari Bu ularning asosiy boshqaruv qobiliyatlarini umumlashtirishning ajoyib usulini topishi mumkin. Agar siz ushbu qoʻllanmaning birinchi nashrini LPI imtihoniga tayyorlanishdan boshqa maqsadda oʻrgangan boʻlsangiz, ushbu nashrni qayta oʻqishga hojat qolmasligi mumkin. Ammo, agar siz imtihon topshirishni rejalashtirayotgan bo'lsangiz, o'quv qo'llanmasining qayta ko'rib chiqilgan versiyasini qayta o'qib chiqishingiz tavsiya etiladi. Oddiy ifodalar"Doimiy ifoda" nima?Muntazam ibora (ingliz tilida oddiy ibora, qisqartirilgan "regexp" yoki "regex", bizning mamlakatimizda uni ba'zan "regular" deb ham atashadi - taxminan chiziqli) tasvirlash uchun ishlatiladigan maxsus sintaksisdir. matn shablonlari. Linux tizimlarida oddiy iboralar matnda naqsh izlash, shuningdek, matn oqimlarida qidirish va almashtirish operatsiyalari uchun keng qo'llaniladi. Globbing bilan solishtirgandaOddiy iboralarni ko'rib chiqishni boshlaganimizdan so'ng, ularning sintaksisi biz 1-qismda ko'rib chiqqan globbing sintaksisiga juda o'xshashligini sezishingiz mumkin. Biroq, xato qilmang, bu o'xshashlik juda yuzaki. Muntazam iboralar va globbing naqshlari, hatto ular o'xshash bo'lsa ham, tubdan farq qiladi. Oddiy pastki qatorBu ogohlantirishdan voz kechgan holda, keling, oddiy iboralar haqidagi eng asosiy narsani, eng oddiy pastki qatorni ko'rib chiqaylik. Buning uchun biz "grep" buyrug'idan foydalanamiz, bu buyruq fayl tarkibini berilgan muntazam ifodaga muvofiq skanerlaydi. grep qolganlarini e'tiborsiz qoldirib, muntazam ifodaga mos keladigan har bir qatorni chop etadi: $ grep bash /etc/passwd Yuqorida grep uchun birinchi parametr regex; ikkinchisi - fayl nomi. grep har bir satrni o'qiydi /etc/passwd va moslik izlash uchun unga oddiy "bash" regex pastki qatorini qo'lladi. Agar moslik topilsa, grep butun qatorni chop etdi; aks holda, chiziq e'tiborga olinmaydi. Oddiy pastki qatorni tushunishUmuman olganda, agar siz pastki qatorni qidirayotgan bo'lsangiz, uni hech qanday "maxsus" belgilardan foydalanmasdan oddiygina tom ma'noda belgilashingiz mumkin. Agar pastki satringizda +, ., *, [, ] yoki \ bo'lsa, alohida e'tibor berishingiz kerak, bu holda bu belgilardan teskari qiyshiq chiziq va pastki qator qo'shtirnoq ichiga olinishi kerak. Oddiy pastki qator sifatidagi oddiy iboralarga ba'zi misollar:
Meta belgilarMuntazam iboralar yordamida, metabelgilardan foydalangan holda, biz yaqinda ko'rib chiqqan misollarga qaraganda ancha murakkab qidiruvlarni amalga oshirish mumkin. Bunday meta-belgilardan biri "." (nuqta), har qanday bitta belgiga mos keladi: $ grep dev.sda /etc/fstab Bu misolda dev.sda matni hech bir satrda ko'rinmaydi /etc/fstab. Biroq, grep uni dev.sda chizig'i bo'yicha emas, balki dev.sda namunasi bo'yicha skanerlaydi. Shuni esda tutingki, "." har qanday bitta belgiga mos keladi. Ko'rib turganingizdek, meta-belgi "." funksional jihatdan “?” metabelgisi qanday ishlashiga teng. glob almashinuvlarida. FoydalanishAgar biz belgi haqida "." dan ko'ra aniqroq ma'lumot olishni istasak, mos keladigan belgilar to'plamini belgilash uchun [ va ] (kvadrat qavs) dan foydalanishimiz mumkin: $ grep dev.sda /etc/fstab Siz sezganingizdek, xususan, bu sintaktik konstruktsiya fayl nomlarini glob bilan almashtirganda "" konstruktsiyasi bilan bir xil ishlaydi. Shunga qaramay, bu muntazam iboralarni o'rganishdagi noaniqliklardan biridir: sintaksis glob almashtirish sintaksisiga o'xshash, lekin bir xil emas, bu chalkashlikdir. [^] dan foydalanishKvadrat qavslar maʼnosini [dan keyin darhol ^ qoʻyish orqali oʻzgartirishingiz mumkin. Bunday holda, qavslar ularning ichida YO'Q har qanday belgiga mos keladi. Yana e'tibor bering, biz [^] dan muntazam ifoda bilan va [!] dan globus bilan foydalanamiz: $ grep dev.hda[^12] /etc/fstab Turli sintaksisShuni ta'kidlash kerakki, kvadrat qavslar ichidagi sintaksis boshqa oddiy iboralardan tubdan farq qiladi. Misol uchun, agar siz "." ni qo'ysangiz. kvadrat qavslar ichida, bu kvadrat qavslarning "" mos kelishiga imkon beradi. tom ma'noda, xuddi yuqoridagi misoldagi 1 va 2 kabi. Taqqoslash uchun, "." kvadrat qavslar tashqarisida joylashtirilgan, agar "\" qo'shilmasa, metabelgi sifatida talqin qilinadi. Foyda olishimiz mumkin bu fakt/etc/fstab dan dev.sda qatorini o'z ichiga olgan satrlarni yozilganidek chop etish uchun: $ grep dev[.]sda /etc/fstab Shuningdek, biz quyidagilarni yozishimiz mumkin: $ grep "dev\.sda" /etc/fstab Bu oddiy iboralar sizning bitta qatoringizga mos kelmasligi mumkin /etc/fstab fayl. Matasymbol *Ba'zi meta-belgilar o'zlari hech narsaga mos kelmaydi, lekin oldingi belgining ma'nosini o'zgartiradi. Bunday belgilardan biri * (yulduzcha) bo'lib, u oldingi belgining nol yoki undan ortiq takrorlanishiga mos kelish uchun ishlatiladi. E'tibor bering, bu * regexda globbingdan ko'ra boshqacha ma'noga ega ekanligini anglatadi. Mana bir nechta misollar va muntazam ifoda moslashuvi glob almashtirishlardan farq qiladigan holatlarga alohida e'tibor bering:
Shunday qilib, mustahkamlash uchun takrorlaymiz: "ac" qatori "ab*c" muntazam ifodasiga mos keladi, chunki yulduzcha oldingi (b) ifodani ham nol marta takrorlashga imkon beradi. Va yana shuni ta'kidlash kerakki, muntazam iboralardagi * metabelgisi glob almashtirishlardagi * belgisidan butunlay boshqacha talqin qilinadi. Chiziqning boshlanishi va oxiriBiz batafsil ko'rib chiqadigan oxirgi meta-belgilar ^ va $ bo'lib, ular mos ravishda satrning boshi va oxiriga mos kelish uchun ishlatiladi. Regexning boshida ^ dan foydalanib, siz naqshingizni satr boshiga "langar" qilasiz. Quyidagi misolda biz # belgisi bilan boshlangan har qanday qatorga mos keladigan ^# oddiy ifodasidan foydalanamiz:
$ grep ^# /etc/fstab To'liq chiziqli muntazam^ va $ butun qatorga mos kelishi uchun birlashtirilishi mumkin. Masalan, quyidagi oddiy ibora # belgisi bilan boshlanib, "." belgisi bilan tugaydigan qatorlarga mos keladi, ular orasida ixtiyoriy sonli belgilar mavjud:
$ grep "^#.*\.$" /etc/fstab Yuqoridagi misolda qobiq $ belgisini talqin qilishiga yo'l qo'ymaslik uchun oddiy iborani bitta tirnoq ichiga oldik. Bitta tirnoqsiz $ bizning regeximizdan grep uni ko'rmasdan yo'qoladi. Mualliflar haqidaDaniel RobbinsDaniel Robbins - Gentoo hamjamiyatining asoschisi va yaratuvchisi operatsion tizim Gentoo Linux. Daniel rafiqasi Meri va ikkita baquvvat qizi bilan Nyu-Meksikoda yashaydi. U, shuningdek, Funtoo asoschisi va bosh direktori bo‘lib, IBM developerWorks, Intel Developer Services va C/C++ Users Journal uchun ko‘plab texnik maqolalar yozgan. Kris XauserChris Houser 1994 yilda Teylor universitetida (Indiana, AQSH) ma'muriy guruhga qo'shilganidan beri UNIX advokati bo'lib, u erda kompyuter fanlari va matematika bo'yicha bakalavr darajasini olgan. O'shandan beri u turli sohalarda ishlagan, jumladan, veb-ilovalar, video tahrirlash, UNIX drayverlari va kriptografik xavfsizlik. IN hozirda Sentry Data Systems kompaniyasida ishlaydi. Kris, shuningdek, Gentoo Linux va Clojure kabi ko'plab bepul loyihalarga hissa qo'shgan va "Clojure quvonchi" kitobining hammuallifi. Aron GriffisAaron Griffis Bostonda yashaydi, u yerda soʻnggi oʻn yilni Hewlett-Packard’da Tru64 uchun UNIX tarmoq drayverlari, Linux xavfsizlik sertifikati, Xen va boshqalar kabi loyihalarda ishlagan. KVM virtualizatsiyasi, va yaqinda, HP ePrint platformasi. Aaron dasturlash bilan shug'ullanmasa, velosipedda haydash, ko'rshapalaklar o'ynash yoki Boston Red Sox professional beysbol jamoasini qo'llab-quvvatlash paytida dasturlash muammolari haqida o'ylashni yaxshi ko'radi. Linux terminalidagi eng foydali va xususiyatlarga boy buyruqlardan biri bu "grep" buyrug'idir. Bu nom inglizcha “Dunyoviy ifodaga mos keladigan satrlarni global miqyosda qidiring va ularni chop eting” iborasining qisqartmasi boʻlib (hamma joyda muntazam ifodaga mos keladigan satrlarni qidiring va ularni chop eting). "grep" buyrug'i kirish oqimini satr bo'yicha skanerdan o'tkazadi, mosliklarni qidiradi va faqat berilgan naqshga mos keladigan matnni o'z ichiga olgan satrlarni chiqaradi (filtrlar) - muntazam ifoda. Muntazam iboralar metabelgilardan foydalanishga asoslangan matndagi pastki qatorlarni qidirish va boshqarish uchun maxsus rasmiy tildir. Hozir deyarli barcha zamonaviy dasturlash tillarida matnni qayta ishlash uchun oddiy iboralar oʻrnatilgan, ammo tarixan UNIX dunyosi va xususan, “grep”, “sed” va hokazo buyruqlar ichiga kiritilgan gʻoyalar katta hissa qoʻshgan. “Hammasi fayl” falsafasi » UNIX tizimiga to‘liq kirib boradi va matnli fayllar bilan ishlash vositalarini o‘zlashtirish har bir Linux foydalanuvchisi uchun zarur bo‘lgan ko‘nikmalardan biridir. NAMUNAGIST | "Odamlar" matnini o'z ichiga olgan barcha qatorlarni oddiy qidirish. Ushbu va keyingi misollarni formatlashda biz quyidagi tartibga rioya qilamiz: yuqorida buyruq qatori parametrlari, pastda standart oqimlar, chapda stdin kiritish va o'ngda stdout chiqishi. "grep" buyrug'i uni ishga tushirishda belgilashingiz mumkin bo'lgan ta'sirchan sonli variantlarga ega. Ushbu variantlar yordamida siz juda ko'p foydali narsalarni qilishingiz mumkin va hatto oddiy ifoda sintaksisini yaxshi bilishingiz shart emas. VARIANTLARKeling, "grep" nafaqat standart kirish stdinni filtrlashi, balki fayllarni qidirishi ham mumkinligidan boshlaylik. Odatiy bo'lib, grep faqat joriy katalogdagi fayllarni qidiradi, lekin juda foydali --recursive opsiyasi bilan siz grepga berilgan katalogdan boshlab rekursiv qidirishni aytishingiz mumkin. GIST | Odatiy bo'lib, grep buyrug'i katta-kichik harflarga sezgir. Quyidagi misolda katta-kichik harflar sezgir bo'lmasdan qanday qilib qidirish mumkinligi ko'rsatilgan, masalan, "Adams" va "adams" bir xil narsa: "Adams" harfini e'tiborsiz qoldiring Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jon Adams, 1797-1801 GIST | Qidiruv buning aksi (ba'zan ular teskari qidiruv deyishadi), ya'ni ko'rsatilgan naqshga ega bo'lganlardan tashqari barcha qatorlar ko'rsatiladi: Invert-match "Adams" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jorj Vashington, 1789-1797 Tomas Jefferson, 1801-1809 GIST | Variantlar, albatta, bir-biri bilan birlashtirilishi mumkin va kerak. Masalan, teskari yo'nalishda qidirish, ketma-ket raqamlarni ko'rsatish bilan: Satr raqami --invert-match "Adams" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 1: Jorj Vashington, 1789-1797 3: Tomas Jefferson, 1801-1809 GIST | Rang berish. Ba'zan biz izlayotgan so'z rang bilan ta'kidlanganda qulay. Bularning barchasi allaqachon "grep" da, qolganlari quyidagilardan iborat: Satr raqami --color=har doim "Odamlar" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 2: Jon Adams, 1797-1801 GIST | Biz jurnal faylidagi barcha xatolarni tanlamoqchimiz, lekin xatolikdan keyingi qatorda bo'lishi mumkinligini bilamiz foydali ma'lumotlar, keyin kontekstdan bir nechta satrlarni chiqarish qulay. Odatiy bo'lib, grep faqat moslik topilgan qatorni chop etadi, ammo grepni ko'proq chop etish uchun bir nechta variant mavjud. Kirishdan keyin bir nechta satrlarni (bizning holatlarimizda ikkita) ko'rsatish uchun: Rang = har doim -A2 "Adams" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jeyms Madison, 1809-1817 Jeyms Monro, 1817-1825 Jon Adams, 1797-1801, Tomas Jefferson, Tomas Jefferson 817 GIST | Xuddi shunday, kirishdan oldin bir nechta satrlarning qo'shimcha chiqishi uchun: Rang = har doim -B2 "Jeyms" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jeyms Madison, 1809-1817 Jeyms Monro, 1817-1825 Jon Adams, 1797-1801, Tomas Jefferson, Tomas Jefferson 817 Jeyms Monro , 1817-1825 GIST | Biroq, ko'pincha siz nosimmetrik kontekstni ko'rsatishingiz kerak, buning uchun undan ham qisqaroq belgilar mavjud. Keling, yozuvning tepasida va ostida ikkita qatorni chop qilaylik: Rang = har doim -C2 "Jeyms" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jeyms Madison, 1809-1817 Jeyms Monro, 1817-1825 Jon Quincy Adams, 1825-1829 Jon Kvinsi Adams, 1825-1829 Endryu317 Van31818 41 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jeyms Madison, 1809-1817 Jeyms Monro, 1817-1825 Jon Kvinsi Adams, 1825-1829 Endryu Jekson, 1829-1837 GIST | Qwe ni qidirganingizda, sukut bo'yicha "grep" qwe123, 345qwerty va shunga o'xshash kombinatsiyalarni ham chiqaradi. Keling, faqat butun so'zni o'chirib qo'yadigan qatorlarni topamiz: Word-regexp --color=har doim "Jon" Jon Fitsjerald Kennedi, 1961-1963 Lindon Beyns Jonson, 1963-1969 Jon Fitsjerald Kennedi, 1961-1963 GIST | Va nihoyat, agar siz bitta raqamga mos keladigan satrlar sonini bilmoqchi bo'lsangiz, lekin boshqa hech narsani ko'rsatmasangiz: Hisoblash --color=har doim "Jon" Jon Fitsjerald Kennedi, 1961-1963 Lindon Beyns Jonson, 1963-1969 Richard Milxous Nikson, 1969-1974 2 Shuni ta'kidlash kerakki, ko'pgina variantlarda o'xshash mavjud, masalan --ignore-case qisqaroq -i shakliga qisqartirilishi mumkin va hokazo. ASOSIY MONTAJIDAGI iboralarBarcha muntazam iboralar ikki turdagi belgilardan iborat: standart matn belgilar, chaqirildi harflar, va maxsus belgilar chaqiriladi metabelgilar. Oldingi misollarda qidiruv literallar (harflarning aniq mosligi) yordamida amalga oshirildi, ammo keyingi narsa qiziqroq bo'ladi. Muntazam iboralar dunyosiga xush kelibsiz! Karet ^ va dollar belgilari $ muntazam ifodada alohida ma'noga ega. Ular "langarlar" deb ataladi. Ankorlar Maxsus belgilar, bu kerakli mos keladigan satrdagi joyni ko'rsatadi. Qidiruv langarga yetganda, moslik bor-yo'qligini tekshiradi va agar shunday bo'lsa, naqsh bo'yicha davom etadi. natijaga hech narsa qo'shmasdan. GIST | Karet langari muntazam ifodani satr boshidan sinab ko'rish kerakligini ko'rsatish uchun ishlatiladi: Rang=har doim "^J" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jon Adams, 1797-1801 GIST | Shunga o'xshab, dollar langari naqsh oxirida ishlatilishi kerak, agar izlanayotgan belgilar qatori matn satrining oxirida bo'lsa, mos kelishi to'g'ri ekanligini ko'rsatish uchun ishlatiladi va boshqacha emas: Rang=har doim "9$" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Tomas Jefferson, 1801-1809 GIST | Har qanday xarakter. Belgilangan joyda mutlaqo istalgan belgi paydo bo'lishi mumkinligini ko'rsatish uchun nuqta belgisi odatiy iboralarda ishlatiladi: Rang=har doim "0.$" GIST | Himoya. Agar siz aniq nuqta belgisini topishingiz kerak bo'lsa, qochish yordam beradi. Nuqta kabi belgi oldidagi qochish belgisi (odatda teskari qiyshiq chiziq) metabelgini literalga aylantiradi: Rang=har doim "\". Jorj Vashington. 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jorj Vashington. 1789-1797 yillar GIST | Qahramonlar sinflari. Muntazam ifodalar diapazonlar va belgilar sinflaridan foydalanishi mumkin. Buning uchun shablonni yaratishda kvadrat qavslar qo'llaniladi. Kvadrat qavslar ichiga belgilar guruhini (shu jumladan metabelgilar sifatida talqin qilinishi mumkin bo'lgan belgilarni) joylashtirish orqali siz qavs ichidagi har qanday belgilar o'sha joyda paydo bo'lishi mumkinligini ko'rsatishingiz mumkin: Rang = har doim "0" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 GIST | Diapazon. Bular tire bilan ajratilgan ikkita belgi, masalan 0-9 (o'nlik raqamlar) yoki 0-9a-fA-F (on oltilik raqamlar): Rang=har doim "" Jorj Vashington, ??? Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 GIST | Inkor qilish. Agar kvadrat qavs ichidagi ifodaning birinchi belgisi karet bo'lsa, qolgan belgilar muntazam ifodaning berilgan joyida bo'lmasligi kerak bo'lgan belgilar to'plami sifatida qabul qilinadi: Rang=har doim "[^7]$" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 GIST | POSIX belgilar sinflari. Muntazam iboralarda foydalanishingiz mumkin bo'lgan oldindan tayyorlangan belgilar sinflarining ma'lum bir to'plami mavjud. Ularning o'nga yaqini bor, har birining maqsadini tushunish uchun qo'llanmani tezda ko'rib chiqing. Masalan, faqat o'n oltilik raqamlarni filtrlaymiz: Rang=har doim "^[[:xdigit:]]*$" 4.2 42 42abc 42 42abc GIST | Takrorlang (0 yoki undan ortiq marta). Eng ko'p ishlatiladigan meta-belgilardan biri yulduzcha belgisi bo'lib, "oldingi belgi yoki ifodani nol yoki undan ko'p marta takrorlash" degan ma'noni anglatadi: Rang=har doim "^*$" Jorj Vashington, ??? Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jorj Vashington, ??? Asosiy muntazam iboralar BRE (asosiy muntazam iboralar) va kengaytirilgan muntazam iboralar ERE (kengaytirilgan muntazam iboralar) mavjud. BREda quyidagi meta-belgilar tan olingan: ^$. * va boshqa barcha belgilar harflar sifatida qabul qilinadi. Quyidagi metabelgilar ERE () ( ) ga qo'shilganmi? + | va tegishli funktsiyalar. Hammani chalkashtirib yuborish uchun ular “grep” da bu narsani o‘ylab topishdi – BREdagi () ( ) belgilar, agar ular teskari qiyshiq chiziq bilan qochib qutulsa, metabelgilar sifatida qabul qilinadi, EREda esa oldiga teskari chiziq qo‘yadi. har qanday metabelgilar ularga harflar kabi munosabatda bo'lishiga olib keladi. MUVOFIQ MUVOFIQ iboralarGIST | Ajralish. Kvadrat qavslar bitta belgi uchun turli xil mumkin bo'lgan mosliklarni ko'rsatganidek, ajratish ham belgilar yoki ifodalar qatorlari uchun muqobil mosliklarni belgilashga imkon beradi. Vertikal chiziq belgisi disjunctionni ko'rsatish uchun ishlatiladi: Extended-regexp --color=har doim "Jorj|Jon" Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 Tomas Jefferson, 1801-1809 Jorj Vashington, 1789-1797 Jon Adams, 1797-1801 GIST | Nol yoki bir marta moslang. Kengaytirilgan muntazam iboralarda belgi yoki ibora qanchalik tez-tez takrorlanishini ko'rsatadigan bir nechta qo'shimcha metabelgilar mavjud (yulduzcha metabelgi 0 yoki undan ortiq marta mos kelishini ko'rsatishiga o'xshash). Bunday metabelgilardan biri oldingi belgi yoki ifodani asosan ixtiyoriy holga keltiradigan savol belgisidir: Extended-regexp --color=always "^(Endryu)?Jon" Jon Adams, 1797-1801 Endryu Jonson, 1865-1869 Lindon Beyns Jonson, 1963-1969 Jon Adams, 1797-1801 Endryu Jonson, 1865-1869 GIST | Bir yoki bir necha marta moslang. Shu maqsadda ortiqcha belgisi ko'rinishidagi meta-belgi taqdim etiladi. U deyarli yulduzcha belgisi kabi ishlaydi, faqat ifoda kamida bir marta mos kelishi kerak: Extended-regexp --color=always "^[[:alpha:] ]+$" Jon Adams Endryu Jonson, 1865-1869 Lindon Beyns Jonson, 1963-1969 Jon Adams GIST | Belgilangan sonni moslashtiring. Buning uchun jingalak qavslardan foydalanishingiz mumkin. Ushbu metabelgilar ifodaning aniq sonini, diapazonini va yuqori va pastki chegarasini ko'rsatish uchun ishlatiladi: Extended-regexp --color=har doim "(1,3)\.(1,3)\.(1,3)\.(1,3)" 42 127.0.0.1 127.0.0.1 grep buyrug'i shunchalik foydali, imkoniyatlarga boy va ishlatish uchun qulayki, uni bilganingizdan so'ng, usiz ishlashni tasavvur qilib bo'lmaydi. grep yordam dasturi juda kuchli qidiruv va filtrlash vositasidir. matnli ma'lumotlar. Ushbu maqolada uning imkoniyatlarini baholashga imkon beradigan undan foydalanishning bir nechta misollari keltirilgan. $ grep igna haystack.txt Natijada, grep haystack.txt fayli mazmunida uchraydigan barcha igna holatlarini ko'rsatadi. Shuni ta'kidlash kerakki, bu holda grep so'zni emas, balki belgilar to'plamini qidiradi. Misol uchun, "keraksiz" so'zini va "igna" ketma-ketligini o'z ichiga olgan boshqa so'zlarni o'z ichiga olgan satrlar ko'rsatiladi. $ grep -w igna haystack.txt Qidiruvni faqat bitta fayl bilan cheklash shart emas; grep fayllar guruhi bo'ylab qidirishi mumkin va qidiruv natijalari moslik topilgan faylni ko'rsatadi. -n kaliti moslik topilgan qator raqamini ham qo'shadi va -r kaliti rekursiv qidiruvni amalga oshirishga imkon beradi. Bu dastur manba kodlari bo'lgan fayllarni qidirishda juda qulay. $ grep -rnw function_name /home/www/dev/myprogram/ Fayl nomi har bir oʻyindan oldin roʻyxatga olinadi. Agar fayl nomlarini yashirish kerak bo'lsa, -h tugmasidan foydalaning, aksincha, agar sizga faqat fayl nomlari kerak bo'lsa, u holda -l kalitini belgilang. $ grep -wo http://.* channel.log | quyruq -o opsiyasi grepga butun qatorni emas, balki faqat naqsh mosligini chop etishni aytadi. Quvurdan foydalanib, biz grep chiqishini sukut bo'yicha oxirgi 10 qatorni chiqaradigan quyruq buyrug'iga yo'naltiramiz. $ grep -c "^user_at_(uy|ish)" channel.log -c opsiyasi bilan grep faqat topilgan mosliklar sonini chop etadi, mosliklarning o'zini emas. Qidiruv qatori qo'shtirnoq ichiga olingan, chunki u qobiq tomonidan nazorat belgilari sifatida tan olinishi mumkin bo'lgan maxsus belgilarni o'z ichiga oladi. E'tibor bering, qo'shtirnoqlar qidiruv sxemasiga kiritilmagan. Teskari chiziq "" maxsus belgilardan qochish uchun ishlatiladi. $ grep -w "+(5,)" channel.log Batafsilroq tavsif uchun grep man sahifasiga murojaat qilishingiz mumkin. # grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin /etc/passwd faylidan satr ildizini o'z ichiga olgan satrlarni ko'rsatadi. # grep -n root /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 12:operator:x:11:0:operator:/root:/sbin/nologin Bundan tashqari, qidirilayotgan qatorni o'z ichiga olgan qator raqamlari ko'rsatiladi. # grep -v bash /etc/passwd | grep -v nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown stop:x:7:0:halt:/sbin :/sbin/halt news:x:9:13:news:/var/spool/news: mailnull:x:47:47::/var/spool/mqueue:/dev/null xfs:x:43:43: X Font Server:/etc/X11/fs:/bin/false rpc:x:32:32:Portmapper RPC foydalanuvchisi:/:/bin/false nscd:x:28:28:NSCD Demon:/:/bin/false nomli:x:25:25:Named:/var/named:/bin/false squid:x:23:23::/var/spool/squid:/dev/null ldap:x:55:55:LDAP Foydalanuvchi: /var/lib/ldap:/bin/false apache:x:48:48:Apache:/var/www:/bin/false Qaysi foydalanuvchilar bash ishlatmayotganligini tekshiradi, ularning qobig'i sifatida nologin ko'rsatilgan foydalanuvchi hisoblari bundan mustasno. # grep -c false /etc/passwd 7 Qobiq sifatida /bin/false bo'lgan hisoblar sonini hisoblaydi. # grep -i o'yinlari ~/.bash* | grep -v tarixi Bu buyruq joriy foydalanuvchining uy katalogidagi nomlari ~/.bash bilan boshlanadigan barcha fayllardan satrlarni ko'rsatadi, nomlari qator tarixini o'z ichiga olgan fayllar bundan mustasno, ~/.bash_history ichida bir xil qatorni belgilashi mumkin bo'lgan mosliklarni istisno qilish uchun. katta yoki kichik harflarda. E'tibor bering, "o'yinlar" so'zini qidirish amalga oshiriladi, uning o'rniga istalgan boshqa so'zni qo'shishingiz mumkin. Oldingi misoldan farqli o'laroq, biz endi faqat "root" qatori bilan boshlanadigan qatorlarni ko'rsatamiz: # grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash Qaysi hisoblar qobiqdan umuman foydalanmaganligini ko'rishni istasak, biz ":" belgisi bilan tugaydigan qatorlarni qidiramiz: # grep:$ /etc/passwd news:x:9:13:news:/var/spool/news: ~/.bashrc faylingizdagi PATH o'zgaruvchisi eksport qilinganligini tekshirish uchun avval "eksport" bilan qatorlarni tanlang va keyin "PATH" qatoridan boshlanadigan qatorlarni qidiring; bu holda MANPATH va boshqalar ko'rsatilmaydi mumkin bo'lgan usullar: # grep eksport ~/.bashrc | grep "PATH" eksport PATH="/bin:/usr/lib/mh:/lib:/usr/bin:/usr/local/bin:/usr/ucb:/usr/dbin:$PATH" Qahramonlar sinflari Kvadrat qavs ichidagi ifoda [" va "]"" belgilar ichiga olingan belgilar ro'yxatidir. U ushbu ro'yxatda ko'rsatilgan har qanday bitta belgiga mos keladi; agar ro'yxatning birinchi belgisi "^" bo'lsa, u ro'yxatda YO'Q har qanday belgiga mos keladi. Masalan, "" muntazam ifodasi har qanday bitta raqamga mos keladi. Kvadrat qavs ichidagi ifoda ichida siz chiziqcha bilan ajratilgan ikkita belgidan iborat diapazonni belgilashingiz mumkin. Keyin ibora tartiblash qoidalariga ko'ra, ushbu ikki belgi, shu jumladan, ushbu ikkita belgi ichiga tushadigan har qanday singlga mos keladi; bu mahalliy tilda ko'rsatilgan harmanlama va belgilar to'plamini hisobga oladi. Misol uchun, standart til C bo'lsa, "" ifodasi "" ifodasiga tengdir. Saralash lug'at tartibida amalga oshiriladigan ko'plab tillar mavjud va bu tillarda "" odatda "" ga ekvivalent emas, ularda, masalan, "" iborasiga ekvivalent bo'lishi mumkin. Kvadrat qavs ichida ko'rsatilgan ifodaning an'anaviy talqinidan foydalanish uchun uni o'rnatish orqali C tilidan foydalanishingiz mumkin atrof-muhit o'zgaruvchisi LC_ALL qiymati "C". Nihoyat, kvadrat qavslar ichida ifodalar ichida ko'rsatilgan maxsus nomlangan belgilar sinflari mavjud. Qo'shimcha ma'lumot Ushbu oldindan belgilangan iboralar haqida ma'lumot olish uchun man sahifalariga yoki grep buyrug'i hujjatlariga qarang. # grep /etc/group sys:x:3:root,bin,adm tty:x:5: mail:x:12:mail,postfix ftp:x:50: hech kim:x:99: floppy:x:19: xfs:x:43: nfsnobody:x:65534: postfix:x:89: Misol "y" yoki "f" belgisini o'z ichiga olgan barcha qatorlarni ko'rsatadi. "." dan foydalaning. har qanday bitta belgiga mos kelish uchun. Agar hammasi ro'yxatini olishni istasangiz Inglizcha so'zlar, lug'atdan olingan, "c" bilan boshlanib, "h" bilan tugaydigan beshta belgidan iborat (krossvordlarni echish uchun foydali): # grep " Agar siz nuqta belgisini o'z ichiga olgan satrlarni harf sifatida ko'rsatishni istasangiz, grep buyrug'ida -F variantini belgilang. Belgilar"< " и «>" ko'rsatilgan harflardan oldin va shunga mos ravishda keyin bo'sh qator mavjudligini anglatadi. Demak, so'zlar faylidagi so'zlar mos ravishda yozilishi kerak. Agar siz matndagi barcha so'zlarni bo'sh qatorlarni hisobga olmagan holda ko'rsatilgan naqshlar bo'yicha topmoqchi bo'lsangiz, belgilarni o'tkazib yuboring "< " и «>", faqat so'zlarni aniqroq qidirish uchun -w tugmasidan foydalaning. Xuddi shunday, "c" va "h" orasida istalgan miqdordagi belgilar bo'lishi mumkin bo'lgan so'zlarni topish uchun yulduzcha (*) dan foydalaning. Quyidagi misol tizim lug'atidan "c" bilan boshlanib, "h" bilan tugaydigan barcha so'zlarni tanlaydi: # grep " Agar siz fayl yoki chiqish oqimida yulduzcha belgisini topmoqchi bo'lsangiz, uni topish uchun bitta tirnoqdan foydalaning. Quyidagi misoldagi foydalanuvchi avval /etc/profile faylida tirnoqlarni ishlatmasdan “yulduzcha”ni izlashga harakat qiladi, natijada hech narsa topilmaydi. Qo'shtirnoq ishlatilsa, natija chiqadi: # grep * /etc/profile # grep "*" /etc/profile for i in /etc/profile.d/*.sh ; qil Xayrli kun, mehmonlar! Bugungi maqolada men shunday katta mavzuga to'xtalib o'tmoqchiman Oddiy ifodalar. Menimcha, regexlar mavzusi (muntazam iboralar jargonda deyilganidek) bitta post doirasida juda keng ekanligini hamma biladi. Shuning uchun, men qisqacha, lekin iloji boricha aniq, o'z fikrlarimni to'plashga va ularni sizga etkazishga harakat qilaman. Muntazam iboralarning bir nechta turlari mavjudligini aytishdan boshlaylik: 1. An'anaviy muntazam iboralar(ular ham asosiy, asosiy va asosiy muntazam iboralar(BRE))
2. Kengaytirilgan muntazam ifodalar(ular kengaytirilgan muntazam iboralar(ERE))
3. Perl bilan mos keladigan oddiy iboralar(ular Perl bilan mos keladigan muntazam ifodalar(PCRE))
Oddiy ifodalar dan iborat shablonlar, aniqrog'i shablonni o'rnating qidirmoq. Shakldan iborat dan qoidalar dan tashkil topgan qidiruvlar belgilar Va metabelgilar. Qidiruv qoidalari quyidagilar bilan belgilanadi operatsiyalar: Ro'yxatga olish |Quvur (|) to'g'ri variantlarni ajratadi, deyish mumkin - mantiqiy OR. Misol uchun, "kulrang | kulrang" mos keladi kulrang yoki kulrang. Guruh yoki uyushma()Dumaloq qavslar operatorlar doirasi va ustuvorligini aniqlash uchun ishlatiladi. Masalan, "gray|grey" va "gr(a|e)y" turli naqshlardir, lekin ikkalasi ham o'z ichiga olgan to'plamni tasvirlaydi. kulrang Va kulrang. Quantify()? * +Miqdor ko'rsatkichi belgi yoki guruhdan keyin necha marta aniqlaydi oldingi ifodalanishi mumkin. umumiy ifoda, takrorlar bo'lishi mumkin m dan n gacha. umumiy ifoda m yoki undan ortiq takrorlash. umumiy ifoda n dan ortiq takrorlash mumkin emas. silliqn takrorlash. So'roq belgisi anglatadi 0 yoki 1 marta, xuddi shunday {0,1} . Misol uchun, "colou?r" mos keladi va rang, Va rang. Yulduz anglatadi 0, 1 yoki istalgan raqam bir marta ( {0,} ). Masalan, "go*gle" mos keladi kulmoq, Google, google va boshq. Bundan tashqari anglatadi kamida 1 bir marta ( {1,} ). Masalan, "go+gle" mos keladi Google, google va boshqalar (lekin emas kulmoq). Ushbu muntazam iboralarning aniq sintaksisi amalga oshirishga bog'liq. (ya'ni, ichida asosiy muntazam iboralar belgilar (Va)- teskari chiziq bilan qochib qutuldi) Meta belgilar, sodda qilib aytganda, ularning haqiqiy ma'nosiga to'g'ri kelmaydigan belgilar, ya'ni belgi. (nuqta) nuqta emas, balki biron bir belgi va hokazo. Iltimos, meta-belgilar va ularning ma'nolari bilan tanishib chiqing:
Metabelgilar bizga turli xil mosliklardan foydalanishga yordam beradi. Lekin qanday qilib biz metabelgini muntazam belgi sifatida, ya'ni [ (kvadrat qavs) belgisini kvadrat qavs ma'nosi bilan ifodalashimiz mumkin? Shunchaki:
Ba'zi belgilar to'plamining ta'rifini soddalashtirish uchun ular birlashtirildi. belgilar sinflari va toifalari. POSIX quyidagi jadvalda ko'rsatilganidek, ma'lum belgilar sinflari va toifalari deklaratsiyasini standartlashtirdi:
Regexda shunday narsa bor: Ochko'zlik regexMen buni iloji boricha aniq tasvirlashga harakat qilaman. Aytaylik, biz hamma narsani topmoqchimiz HTML teglari ba'zi matnda. Muammoni lokalizatsiya qilgandan so'ng, biz ularning orasidagi qiymatlarni topmoqchimiz< и >, xuddi shu qavslar bilan birga. Lekin biz bilamizki, teglar har xil uzunliklarga ega va kamida 50 ta teg bor.Ularning barchasini sanab o'tish, ularni metasimbollarga qo'shish juda ko'p vaqt talab qiladigan ish. Lekin biz bilamizki, bizda bir ifoda bor.* (nuqta yulduzcha), bu qatordagi istalgan belgilarning istalgan sonini tavsiflaydi. Ushbu iboradan foydalanib, biz matnda topishga harakat qilamiz ( Shunday qilib, LSI MegaRAID kontrollerida RAID 10/50 darajasini qanday yaratish mumkin (shuningdek, Intel SRCU42x, Intel SRCS16 uchun ham tegishli): ) orasidagi barcha qiymatlar< и >. Natijada, BUTUN satr ushbu ifodaga mos keladi. nega, chunki regex GREEDY bo'lib, ular orasidagi HAMMA sondagi belgilarni olishga harakat qiladi< и >, mos ravishda butun chiziq, boshlovchi < p>Shunday qilib... va tugashi ...> bu qoidaga tegishli bo'ladi!Umid qilamanki, bu misol ochko'zlik nima ekanligini aniqlab beradi. Ushbu ochko'zlikdan xalos bo'lish uchun siz quyidagi yo'ldan borishingiz mumkin:
Men yuqorida aytilganlarning barchasiga qo'shimcha qilmoqchiman kengaytirilgan muntazam ifoda sintaksisi: POSIX-dagi oddiy iboralar an'anaviy Unix sintaksisiga o'xshaydi, lekin ba'zi meta-belgilar qo'shilishi bilan: Bundan tashqari ekanligini bildiradi oldingi belgisi yoki guruh takrorlanishi mumkin bir yoki bir necha marta. Yulduzchadan farqli o'laroq, kamida bitta takrorlash kerak. So'roq belgisi qiladi oldingi belgi yoki guruh ixtiyoriy. Boshqacha qilib aytganda, tegishli qatorda u yo'qligi yoki mavjud bo'lishi mumkin silliq bitta bir marta. Vertikal bar muntazam ifoda muqobillarini ajratadi. Bitta belgi ikkita muqobilni bildiradi, lekin ular ko'proq bo'lishi mumkin, shunchaki ko'proq vertikal chiziqlardan foydalaning. Shuni esda tutish kerakki, ushbu operator maksimaldan foydalanadi mumkin bo'lgan qism ifodalar. Shu sababli, muqobil operator ko'pincha qavs ichida ishlatiladi. Teskari chiziqlardan foydalanish ham bekor qilindi: \(…\) (…) va \(…\) (…) ga aylanadi. Xabarni yakunlash uchun men regexdan foydalanishga misollar keltiraman: $ cat text1 1 olma 2 nok 3 banan $ grep p text1 1 olma 2 nok $ grep "pp*" text1 1 olma 2 nok $ cat text1 | grep "l\|n" 1 olma 3 banan $ echo -e "bu yerda\n* toping" | grep "\*" * bu yerda $ grep "pl\?.*r" text1 # p, r 2 nok bo'lgan satrlarda $ grep "a.." text1 # satrlardan keyin kamida 2 ta belgidan iborat 1 olma 3 banana $ grep "" text1 # 3 yoki p o'z ichiga olgan qatorlarni qidiring 1 olma 2 nok 3 banan $ echo -e "bir joydan\n* toping." | grep "[.*]" * bu yerda biror joyda..name]$ echo -e "123\n456\n789\n0" | grep "" 123,456,789 $ sed -e "/\(a.*a\)\|\(p.*p\)/s/a/A/g" text1 # a dan keyin kelgan barcha qatorlarda a ni A bilan almashtiring a yoki p dan keyin keladi p 1 Olma 2 nok 3 bAnAnA *\./ OXIRGI SO'Z./g" Birinchi. OXIRGI SO'Z. Bu OXIRGI SO'Z. Hurmat bilan, MakSim! Muntazam iboralar juda kuchli vosita matnni naqsh bo'yicha qidirish, satrlarni qayta ishlash va o'zgartirish uchun, bu ko'plab muammolarni hal qilish uchun ishlatilishi mumkin. Mana asosiylari:
Bu uzoq to'liq ro'yxat, muntazam iboralar sizga ko'proq narsani qilish imkonini beradi. Ammo yangi foydalanuvchilar uchun ular juda murakkab ko'rinishi mumkin, chunki ularni yaratish uchun ular maxsus tildan foydalanadilar. Ammo taqdim etilgan imkoniyatlarni hisobga olgan holda, har bir tizim ma'muri Linux oddiy ifodalarini bilishi va ulardan foydalanishi kerak. Ushbu maqolada biz yangi boshlanuvchilar uchun oddiy bash iboralarini ko'rib chiqamiz, shunda siz ushbu vositaning barcha xususiyatlarini tushunishingiz mumkin. Muntazam iboralarda ishlatilishi mumkin bo'lgan ikki turdagi belgilar mavjud:
Umumiy belgilar har qanday qatorni tashkil etuvchi harflar, raqamlar va tinish belgilaridir. Barcha matnlar harflardan iborat bo'lib, siz ularni oddiy iboralarda matndagi kerakli pozitsiyani topish uchun ishlatishingiz mumkin. Metabelgilar boshqa narsa, ular muntazam ifodalarga o'z kuchini beradi. Metabelgilar yordamida siz faqat bitta belgi qidirishdan ko'proq narsani qilishingiz mumkin. Siz belgilar kombinatsiyasini qidirishingiz, belgilarning dinamik sonidan foydalanishingiz va diapazonlarni tanlashingiz mumkin. Barcha maxsus belgilarni ikki turga bo'lish mumkin: oddiy belgilar o'rnini bosuvchi almashtirish belgilar yoki belgi necha marta takrorlanishi mumkinligini ko'rsatadigan operatorlar. Muntazam ifoda sintaksisi quyidagicha ko'rinadi: muntazam_belgi maxsus belgi_operator maxsus_almashtirish_belgi maxsus belgi_operator
Shuni ta'kidlash kerakki, alifbodagi maxsus belgilardan oldin maxsus belgi kelishini ko'rsatish uchun chiziq chizig'idan foydalanish kerak. Buning teskarisi ham to'g'ri, agar siz chiziqsiz ishlatiladigan maxsus belgini oddiy belgi sifatida ishlatmoqchi bo'lsangiz, unda siz chiziq qo'shishingiz kerak bo'ladi. Masalan, siz matnda 1+ 2=3 qatorini topmoqchisiz. Agar siz ushbu qatorni muntazam ifoda sifatida ishlatsangiz, hech narsa topa olmaysiz, chunki tizim plyusni oldingi birlik bir yoki bir necha marta takrorlanishi kerakligini ko'rsatadigan maxsus belgi sifatida izohlaydi. Shunday qilib, undan qochish kerak: 1 \+ 2 = 3. Qochimasdan, bizning oddiy ifodamiz faqat 11=3 yoki 111=3 qatoriga mos keladi va hokazo. Tengning oldiga chiziq qo'yishning hojati yo'q, chunki bu maxsus belgi emas. Muntazam iboralardan foydalanishga misollarEndi biz asoslarni ko‘rib chiqdik va siz hamma narsa qanday ishlashini bilasiz, qolgan narsa Linux grep muntazam ifodalari haqida olgan bilimlaringizni amalda mustahkamlashdir. Ikkita juda foydali maxsus belgilar ^ va $ qatorning boshi va oxirini bildiradi. Masalan, biz nomi s bilan boshlangan barcha foydalanuvchilarni tizimimizda ro'yxatdan o'tkazmoqchimiz. Keyin oddiy ifodadan foydalanishingiz mumkin "^s". Siz egrep buyrug'idan foydalanishingiz mumkin: egrep "^s" /etc/passwd Agar biz satrdagi oxirgi belgi asosida qatorlarni tanlamoqchi bo'lsak, buning uchun $ dan foydalanishimiz mumkin. Masalan, barcha tizim foydalanuvchilarini tanlaymiz, qobiqsiz, bunday foydalanuvchilar haqidagi yozuvlar noto'g'ri tugaydi: egrep "false$" /etc/passwd s yoki d bilan boshlanadigan foydalanuvchi nomlarini ko'rsatish uchun quyidagi ifodadan foydalaning: egrep "^" /etc/passwd Xuddi shu natijani "|" belgisi yordamida olish mumkin. Birinchi variant diapazonlar uchun ko'proq mos keladi, ikkinchisi esa odatiy yoki/yoki: egrep "^" /etc/passwd Endi nomi uch belgidan iborat bo'lmagan barcha foydalanuvchilarni tanlaymiz. Foydalanuvchi nomi ikki nuqta bilan tugaydi. Aytishimiz mumkinki, u har qanday alifbo belgisini o'z ichiga olishi mumkin, uni yo'g'on ichakdan oldin uch marta takrorlash kerak: egrep "^\w(3):" /etc/passwd xulosalarUshbu maqolada biz Linux oddiy iboralarini ko'rib chiqdik, ammo bu faqat asoslar edi. Agar siz biroz chuqurroq qazsangiz, ushbu vosita yordamida juda ko'p qiziqarli narsalarni qilishingiz mumkinligini bilib olasiz. Muntazam iboralarni o'zlashtirishga vaqt ajratish, albatta, bunga arziydi. Xulosa qilish uchun Yandex-dan muntazam iboralar haqida ma'ruza:
|
Mashhur:
Yangi
- Ramka kiritish. Ramkalar yaratish. noframes zaxirasini ta'minlash
- Windows tizimini tiklash Hech qachon tugamaydigan avtomatik tiklashga tayyorgarlik
- Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak
- Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilish kerak?
- Qattiq disk kesh xotirasi nima va u nima uchun kerak?Kesh hajmi nima uchun javob beradi?
- Kompyuter nimadan iborat?
- Tizim blokining tuzilishi - qaysi komponentlar kompyuterning ishlashi uchun javobgardir Tizim blokining ichki qurilmalari xususiyatlari
- Qattiq diskni SSD ga qanday o'zgartirish mumkin
- Kirish qurilmalari kiradi
- Yozilgan dasturlash tili Ushbu o'zgaruvchilar turlari bilan nima qilish kerak