Egrep muntazam ravishda.

Kontaktlar / Android haqida hamma narsa

topshirish

Golovna

Bash skriptlarida matnni sed va awk yordamida to'liq qayta ishlash uchun oddiy viruslardan foydalanish kifoya.

Bunday cholg'u asboblarini tom ma'noda hamma joyda uchratish mumkin, garchi hamma narsa muntazam ravishda xuddi shunday tartibga solingan bo'lsa-da, u bir xil g'oyalarga asoslanadi, ishning turli muhitlarida ularning ortida o'ziga xoslik qo'shig'i bor.

Bu erda biz Linux buyruq qatori skriptlarida foydalanish uchun mos bo'lgan muntazam ishlanmalar haqida gapiramiz.
Muntazam tadqiqotlarga kiritilgan ushbu g'oyalar materiali uning nima ekanligini hatto bilmaganlar tomonidan qamrab olinadi.

Buni boshidan boshlaylik.

Muntazam iboralar qanday?
Boy odamlar uchun, ular muntazam ravishda o'qishni boshlaganlarida, ular oldida juda ko'p belgilar to'plami borligini darhol anglaydilar.

  • Ale tse, shubhasiz, ishdan uzoqdir.
  • Misol uchun, ushbu oddiy virazga qarang

Bizning fikrimizcha, bu o'rganilgan va zarur bo'lganidek, tushunish hissi bilan mutlaqo yangi kelgan :) Agar siz butunlay aniq bo'lmasangiz, faqat o'qing va hamma narsa joyiga tushadi.

POSIX ERE standarti ko'pincha til dasturlashda qo'llaniladi.

Muntazam viruslarning rivojlanishi davrida ko'p sonli urug'larni etishtirishga imkon beradi.

Misol uchun, qo'shni so'zlar yoki raqamlar to'plami matnida tez-tez qidiriladigan naqshlar uchun belgilarning maxsus ketma-ketligi bo'lishi mumkin.

Awk ERE standartini qo'llab-quvvatlaydi.

Oddiy iboralarni ishlab chiqishning ko'plab usullari mavjud, bu ham dasturchining fikriga, ham ular yaratilgan dvigatelning xususiyatlariga bog'liq.

Har qanday dvigatel tushunadigan universal muntazam iboralarni yozish oson emas.

Shuning uchun biz ko'pincha suiiste'mol qilinadigan muntazam iboralarga e'tibor qaratamiz va sed va awk uchun ularni amalga oshirishning o'ziga xos xususiyatlarini ko'rib chiqamiz.

POSIX BRE ning muntazam ifodalari

Ehtimol, eng oddiy BRE shabloni matndagi belgilarning aniq ketma-ketligini topish uchun muntazam ifodadir.

Yak o'qi sed va awk-da qator qidirishga o'xshaydi:

$ echo "Bu test" |

sed -n "/test/p" $ echo "Bu test" |

awk "/test/($0 chop etish)"

Shablon uchun matnni sedda qidiring

Awk da naqshlar uchun matnni qidiring

Shuni ta'kidlash mumkinki, berilgan naqshni qidirish matnning qatordagi aniq joylashuvini aniqlamasdan yakunlanadi.

Bundan tashqari, kirishlar soni muhim emas.

Vazifalarning oddiy matni qatorning istalgan joyida topilgandan so'ng, qator ketma-ket deb hisoblanadi va keyingi ishlov berish uchun o'tkaziladi.

.*^${}+?|()

Muntazam iboralar bilan ishlashda siz belgilarning kattaligiga sezgir bo'lganlardan foydalanishingiz kerak:

Misol uchun, agar siz matndagi dollar belgisini bilishingiz kerak bo'lsa, uni qochish belgisidan oldin shablonga kiritishingiz kerak.

Aytaylik, quyidagi matnga ega myfile fayli mavjud:

Mening cho'ntagimda 10 dollar bor

Dollar belgisini quyidagi naqsh yordamida aniqlash mumkin:

$awk "/$/($0 chop etish)" mening faylim

Maxsus belgi uchun shablonni qidiring

Bunga qo'shimcha ravishda, guruchning yoqa ortiqcha oro bermayligi ham maxsus belgidir, shuning uchun uni shablonga qo'shish kerak bo'lsa, uni ham yashirish kerak bo'ladi.

Bu birin-ketin o'tadigan ikkita chiziqqa o'xshaydi:

$ echo "maxsus belgidir" |

awk "/\/($0 chop etish)"

Orqa chiziqning skriningi

Agar qiyshiq chiziq maxsus belgilar ro'yxatiga kiritilmasligini istasangiz, uni sed yoki awk uchun yozilgan oddiy iborada tezlashtirishga harakat qiling va oxirigacha olib boring:

Naqshdagi oldinga chiziq noto'g'ri tuzatilgan

Agar sizga kerak bo'lsa, uni ham ko'rib chiqishingiz kerak:

$ echo "3/2" |

awk "///($0 chop etish)"

Oldinga qiyshiq chiziqni ko'rish

Yakirny belgilari

Naqshni matn seriyasining boshiga yoki oxiriga bog'lash uchun ikkita maxsus belgi mavjud.


“Qopqoq” belgisi matn satrlari boshida joylashgan belgilar ketma-ketligini tasvirlash imkonini beradi.

Agar naqsh seriyaning boshqa joyida paydo bo'lsa, odatiy naqsh unga munosabat bildirmaydi.

Ushbu belgi quyidagicha ko'rinadi:

$ echo "likegeeks veb-saytiga xush kelibsiz" |

awk "/^likegeeks/($0 chop etish)" $ echo "likegeeks veb-sayti" |

awk "/^likegeeks/($0 chop etish)"

Qatorning boshidagi naqshni qidiring

^ belgisi qator boshida naqsh izlash uchun ishlatiladi, bu holda belgilar registrini ham hisobga oladi.

Matn faylini qayta ishlashda bu qanday amalga oshirilganiga hayronman:

$awk "/^this/($0 chop etish)" mening faylim

Fayldan matndagi satr boshidagi naqshni qidiring

Bitta va bir xil shablonda siz haqoratli belgilardan foydalanishingiz mumkin.

Keling, ushbu oddiy ibora yordamida quyida ko'rsatilgan fayl o'rniga myfile faylini ko'rib chiqaylik:


$ awk "/^ bu test$/($0 chop etish)" mening faylim

Shablon, qaysi vikoristanda qatorning boshida va oxirida maxsus belgilar mavjud

Ko'rinishidan, shablon faqat qatorga javob berdi, bu aslida belgilar ketma-ketligi va ularning joylashuvi vazifasiga mos keladi.

Eksa, langar belgilaridan foydalanib, bo'sh qatorlarni filtrlang:

$awk "!/^$/($0 chop etish)" mening faylim

Ushbu shablonda biz xoch belgisidan, do'l belgisidan foydalanganmiz - !

.

Doimiy ravishda, bunday naqshdan keyin qatorlarni qidirish davom etadi, shuning uchun kob va qator oxiri orasiga hech narsa qo'ymaslik kerak va buning natijasida boshqa qatorlarga mos kelmaydigan chaqiruv belgisi chiziladi. bu naqsh.


Nuqta belgisi

Nuqta har qanday bitta belgini yoki qatorni o'zgartirish belgisini qidirish uchun ishlatiladi.

Biz quyida ko'rsatilgan o'rniga myfile faylini ushbu oddiy virusga o'tkazamiz:

$awk "/.st/($0 chop etish)" mening faylim

Vikoristannya muntazam iboralarda ishora qiladi

Ko'rsatilgan ma'lumotlardan ko'rinib turibdiki, naqsh faqat faylning birinchi ikki qatori tomonidan qo'llab-quvvatlanadi, chunki "st" belgilarining ketma-ketligini yana bitta belgi bilan almashtirish mumkin emas, uchinchi qator esa bir xil. ketma-ketlikni o'zgartirish kerak emas va to'rtinchi in êda, lekin qatorning eng qulog'ida bo'ling.


Belgilar sinflari

Belgi har qanday bitta belgiga mos keladi, lekin belgilar to'plamini yaxshiroq chegaralash kerakmi, nimani qidiryapsiz?

Bu holat belgilar sinflari bilan tezda tushuntirilishi mumkin.

Ushbu yondashuv yordamida siz berilgan to'plamdan istalgan belgini qidirishni tashkil qilishingiz mumkin.

Belgilar sinfini tavsiflash uchun kvadrat qo'llar ishlatiladi - :

$awk "/th/($0 chop etish)" mening faylim

Oddiy tilda belgilar sinfining tavsifi

Belgilar sinflari yuqorida tavsiflangan maqsadlar uchun o'zgartirilishi mumkin.

Va sinfga kiritilgan belgilarni qidirish o'rniga, siz sinfga kiritilmagan barcha narsalarni qidirishni tashkil qilishingiz mumkin.


Bunday muntazam aniqlash xatti-harakatiga erishish uchun siz sinf belgilari ro'yxati oldiga ^ belgisini qo'yishingiz kerak.

Bu shunday ko'rinadi:

$ awk "/[^oi]th/($0 chop etish)" mening faylim

Sinfga kirmaydigan belgilarni qidiring

Bu holda biz th belgilar ketma-ketligini topamiz, ular oldidan na o, na i.


Belgilar diapazoni

Belgilar sinflarida siz belgilar diapazonini, g'alaba va tirelarni tasvirlashingiz mumkin:

$awk "/st/($0 chop etish)" mening faylim

Sinfdagi belgilar diapazoni tavsifi

Ushbu ilovada muntazam ibora "st" belgilarining ketma-ketligiga ta'sir qiladi, undan oldin "e" va "p" belgilari orasida alifbo tartibida joylashtirilgan har qanday belgi mavjud.

Raqamlardan diapazonlar yaratilishi mumkin:

Bu holda biz th belgilar ketma-ketligini topamiz, ular oldidan na o, na i.


$ echo "123" |

awk "//" $ echo "12a" |

awk "//"

Uchta raqamni qidirish uchun odatiy Viraz

  • Belgilar sinfi bir nechta diapazonlarni o'z ichiga olishi mumkin:
  • Ko'p diapazonlardan tashkil topgan belgilar sinfi
  • Siz a-f va m-z diapazonlaridagi belgilar oldidan "st" ning barcha ketma-ketligini osongina topishingiz mumkin.
  • Maxsus belgilar sinflari
  • BRE-da oddiy iboralarni yozishda ishlatilishi mumkin bo'lgan maxsus belgilar sinflari mavjud:
  • [[:alpha:]] - katta yoki kichik harflarda yozilgan har qanday alifbo belgisini ifodalaydi.
  • [[:alnum:]] - har qanday alfanumerik belgini yoki 0-9, A-Z, a-z oralig'idagi belgilarni ifodalaydi.
  • [[:blank:]] - bo'sh joy va yorliq belgisini bildiradi.
  • [[:digit:]] - 0 dan 9 gacha bo'lgan istalgan raqamli belgi.

[[:yuqori:]] - bosh harfdagi alifbo belgilari - A-Z.

[[:pastki:]] - kichik harfdagi alifbo belgilari - a-z.


[[:print:]] - kurashayotgan har qanday belgini bildiradi.

[[:punkt:]] - boʻlinish belgilarini ifodalaydi.

[[:bo'sh joy:]] - bo'sh joy belgilari, bo'sh joy - bo'sh joy, tab, NL, FF, VT, CR belgilar.

Quyidagi kabi shablonlarda maxsus sinflardan foydalanishingiz mumkin:


Muntazam virazahda Vykoristannya belgisi *

Ushbu naqshli ramz doimiy ezguliklar mavjud bo'lgan so'zlar bilan ishlash uchun yoki to'g'ri imloning turli xil variantlariga ruxsat beruvchi so'zlar uchun ishlatiladi:

$ echo "Menga yashil rang yoqadi" |

awk "/colou*r/(chop $0)" $ echo "Menga yashil rang yoqadi" |

awk "/colou*r/($0 chop etish)"

Turli xil imlo o'zgarishlariga ega bo'lgan so'zni qidiring

Bunday holda, "rang" so'zi ham, "rang" so'zi ham bir xil muntazam ibora bilan reaksiyaga kirishadi.


Bu to'g'ri, chunki yulduz paydo bo'lgan "u" belgisi bir xil bo'lmasligi mumkin yoki u bir necha marta keyinroq bo'ladi.

Yulduz ramzining o'ziga xos xususiyatlaridan kelib chiqqan holda, nuqta bilan kombinatsiyada joylashgan boshqa rang ham mumkin.

Ushbu kombinatsiya istalgan miqdordagi belgilarga reaktsiyalarni muntazam ravishda aniqlash imkonini beradi:

$ awk "/this.*test/($0 chop etish)" mening faylim


Har qanday belgilar soniga javob beradigan shablon

Bunday holda, "bu" va "test" so'zlari orasida qancha belgi paydo bo'lishi muhim emas.

Yulduzni belgilar sinflari bilan birlashtirish mumkin:

$ echo "st" |

awk "/s*t/($0 chop etish)" $ echo "o'tirdi" |

awk "/s*t/(chop etish $0)" $ echo "to'siq" |

awk "/s*t/($0 chop etish)"

Belgilar sinflari bilan Vykoristannya zirochki


Har uchala ilovada ham muntazam ifoda mavjud, belgilar sinfidan keyingi kichik yulduz bir qancha “a” yoki “e” belgilari topilishini, shuningdek, agar ular topilmasa, qator berilgan naqshga mos kelishini bildiradi. .

POSIX ERE ning muntazam ifodalari

Linux yordam dasturi amallarini qo'llab-quvvatlaydigan POSIX ERE shablonlari qo'shimcha belgilarni o'z ichiga olishi mumkin.

Yuqorida aytib o'tilganidek, awk ushbu standartni qo'llab-quvvatlaydi, ammo sed o'qi yo'q.


Oziqlanish belgisi va belgilar sinfi

Ketma-ket qatorda hech qanday belgi yo'qligi yoki ulardan biri faqat bir marta paydo bo'lganligi sababli, muntazam ibora so'z ikki belgi bilan tugashini va tizim matnning naqsh bilan mosligini tan olmasligini bildiradi.

▍Plyus belgisi

Shablondagi "ortiqcha" belgisi matnda etakchi belgi bir yoki bir necha marta paydo bo'ladigan holatlarda muntazam ravishda paydo bo'ladigan belgilarni bildiradi.

Belgisi mavjud bo'lganda, bu qurilish javob bermaydi:


$ echo "Test" |

awk "/te+st/($0 chop etish)" $ echo "teest" |

awk "/te+st/($0 chop etish)" $ echo "tst" |


awk "/te+st/($0 chop etish)"

Muntazam iboralardagi ortiqcha belgisi

Bunday holda, so'zda "e" belgisi mavjud emasligi sababli, naqshga mos keladigan muntazam iboralarning dvigatellari matnda topilmaydi.

"Plyus" belgisi belgilar sinflari bilan ishlaydi - bu belgi yulduz va oziq-ovqat belgisiga o'xshaydi:

  • $ echo "tst" |
  • awk "/t+st/($0 chop etish)" $ echo "test" |

awk "/t+st/(chop etish $0)" $ echo "teast" |

awk "/t+st/($0 chop etish)" $ echo "teeast" |

awk "/t+st/($0 chop etish)"

Plyus belgisi va belgilar sinfi

Agar qatorda sinfdan biron bir belgi bo'lsa, matn mos shablon bo'ladi.


▍Jingalak qo'llar

ERE shablonlarida ishlatilishi mumkin bo'lgan kamar shakllari yuqorida ko'rib chiqilgan belgilarga o'xshaydi, ammo yetakchi belgiga kerakli kiritish sonini aniqroq belgilash imkonini beradi.

Belgilash ikki shaklda mumkin:

n - qidirilayotgan ma'lumotlarning aniq sonini ko'rsatadigan raqam


n, m ikkita raqam bo'lib, ular quyidagicha talqin qilinadi: "kamida n marta, lekin m dan ko'p emas."

Shablon matnga a yoki e belgisi bir yoki ikki marta paydo bo'lgandek munosabatda bo'ladi.

▍Mantiqiy “abo” belgisi

Belgi |

- Vertikal guruch oddiy iboralarda "abo" dan ko'ra mantiqiyroq degan ma'noni anglatadi.


Bunday belgi bilan ajratilgan bir qator bo'laklarni muntazam ravishda izlash, matnning muhim tahlillarini haydash, parchalar terisiga o'xshash turga o'xshaydi.

Aksning dumbasi:

$ echo "Bu test" |

awk "/test|imtihon/($0 chop etish)" $ echo "Tim imtihon" |


awk "/test|imtihon/($0 chop etish)" $ echo "Narsalar unchalik boy emas" |

awk "/test|imtihon/($0 chop etish)"

Muntazam iboralarda "Abo" mantiqiyroq

Bunday holda, "test" yoki "imtihon" so'zlaridagi matnni qidirishning muntazam namunasi mavjud.

Naqsh parchalari va ularni ajratib turuvchi belgi orasidagilarga e'tibor bering |

Bu sizning aybingiz emas, lekin tozalashda.

Muntazam iboralar fragmentlarini dumaloq kamar hosil qilish orqali guruhlash mumkin.

Belgilar ketma-ketligini guruhlaganingizda, u tizim tomonidan asosiy belgi sifatida ko'rib chiqiladi.
Keyin, masalan, undan oldingi meta-belgilarni takrorlash mumkin bo'ladi.

Eksa quyidagicha ko'rinadi:

$ echo "Like" |

#!/bin/bash mypath=$(echo $PATH | sed "s/:/ /g") count=0, tekshirish uchun $mypath katalogi uchun=$(ls $katalog) $check do count=$ [ $count + 1 ] bajarildi echo "$katalog - $count" count=0 bajarildi

Skriptni ishga tushirganingizda, PATH-dagi ba'zi kataloglar saqlanmasligini ko'rishingiz mumkin, lekin siz boshqa kataloglarda fayllarni saqlay olmaysiz.


Fayl saqlash

Ushbu dumbaning asosiy qiymati shundaki, ushbu yondashuvdan foydalanib, siz yanada yomonroq muammolarni hal qilishingiz mumkin.

Ularning barchasi sizning ehtiyojlaringizga qarab saqlanadi.

▍Elektron pochta manzilingizni tekshiring

E-pochta manzillarini, telefon raqamlarini va hokazolarni tekshirish imkonini beruvchi oddiy kalit so'zlarning katta to'plamlariga ega veb-saytlar mavjud.

Biroq, o'ngdagi biri olishga tayyor, ikkinchisi esa uni o'zingiz yaratishdir.

Shunday qilib, biz sizning elektron pochta manzilingizni tekshirish uchun muntazam elektron pochta xabarini yozamiz.

^(+)@

Keling, chiqish ma'lumotlarini tahlil qilishdan boshlaylik.

(+)

Eksa, masalan, manzil:

.({2,5})$

[elektron pochta himoyalangan]

Mijozning ismi, foydalanuvchi nomi harf-raqam va boshqa belgilardan iborat bo'lishi mumkin.

^(+)@(+).({2,5})$

Zokrema, nuqta, tire, o'q belgisi, ortiqcha belgisi.

Egasining ismidan keyin @ belgisi qo'yiladi. E-pochta manzillarini, telefon raqamlarini va hokazolarni tekshirish imkonini beruvchi oddiy kalit so'zlarning katta to'plamlariga ega veb-saytlar mavjud. Ushbu bilimga ega bo'lgandan so'ng, chap qismdan koristuvach nomini tekshirish uchun xizmat qiluvchi muntazam iborani shakllantirish vaqti keldi. E-pochta manzillarini, telefon raqamlarini va hokazolarni tekshirish imkonini beruvchi oddiy kalit so'zlarning katta to'plamlariga ega veb-saytlar mavjud. Bizda paydo bo'lgan o'q:


Endi - xost nomi - xost nomi.

Bu erda asosiy qoidalar o'zlari, koristuvach nomi bilan, shuning uchun shablon quyidagicha ko'rinadi:

Yuqori darajadagi domen nomlari maxsus qoidalarga bo'ysunadi.

Maqolaning boshida sizga yuborilgan elektron pochta manzilini tekshirish uchun odatiy virus bo'lib, mutlaqo asossiz bo'lib ko'ringan bo'lsa-da, endi u endi aqlsiz belgilar to'plamiga o'xshamaydi, deb o'ylaymiz.

Agar bu to'g'ri bo'lsa, bu material o'z maqsadiga erishganligini anglatadi.

Darhaqiqat, muntazam yozish - bu hayot davomida hal qilinishi mumkin bo'lgan mavzu, bundan tashqari, biz o'rgangan ozgina narsa sizga yozma skriptlar bilan yordam berishi mumkin, ular yordamida matnlarni osongina tahrirlashingiz mumkin.

Ushbu materiallar seriyasida biz tom ma'noda bir necha qatorda yaratilgan bash skriptlarining juda oddiy ilovalarini ko'rsatdik.

Keyingi safar biz batafsilroq ko'rib chiqamiz.

Shanovny o'quvchilari!

Buyruqlar satri stsenariylarida matnlarni qayta ishlashda muntazam iboralarga duch kelasizmi? grep "global muntazam ifoda printeri" degan ma'noni anglatadi., grep matnni almashtirish uchun matnli fayllardan kerakli qatorlarni kesib tashlaydi., grep ikkita yo'l bilan birlashtirilishi mumkin - o'zi yoki oqimlar bilan birgalikda., grep qo'llab-quvvatlaydigan ko'plab variantlar tufayli juda boy funksionallikka ega, masalan: oddiy shablonning wikilaridan qidirish yoki RegExp oddiy iboralar shablonlari yoki perl asosidagi muntazam iboralar va boshqalar. Turli funktsional imkoniyatlari tufayli grep vositasi ko'plab variantlarga ega, jumladan

egrep (kengaytirilgan GREP)

fgrep (Ruxsat etilgan GREP)

pgrep (GREP jarayoni)

    rgrep (rekursiv GREP)

    va hokazo.

    Biroq, bu variantlar asl grepdan kichik farqlarga ega bo'lishi mumkin.

    grep parametrlari

Grep buyrug'i muntazam_virus tomonidan belgilangan naqsh yordamida chiqish fayllari qatorlarini yaratadi.

Agar fayllar ko'rsatilmagan bo'lsa, standart yozuv ishlatiladi.

Muvaffaqiyatli yaratilgan qator standart tartibga ko'chirilganligini unutmang;

Agar bir nechta chiqish fayllari bo'lsa, fayl nomlari topilgunga qadar qatorda ko'rsatiladi.< и \>.

grep ixcham determinizmsiz algoritmga ega.

Vikoristannya: grep [OPTION]… ŞABLON [FILE]… Teri FILE yoki standart kiritishda PATTERNni qidiring. "Fgrep" o'rniga "grep-F" ga o'tkaziladi. Shablonlarni qayta ishlash tartibi muntazam iboralarni o'z ichiga oladi (belgilarning o'ziga xos ma'nosiga ega bo'lgan iboralar va harf-raqamli va maxsus belgilar chegaralarini vikorist). Xushbo'y hid muntazam ravishda ifodalanadigan bir xil tuyg'uni hidlaydi. $, *, , ^, |, () belgilaridan qochish uchun va qobiq talqiniga ko'ra, oddiy_ifodani bitta yorliqlarga qo'yish eng oson.

Variantlar:

B Teri qatoridan oldin u topilgan blokning raqami qo'yiladi.

Bash - bu an'anaviy ravishda matn terminalida ishlaydigan ko'rsatma protsessor bo'lib, u erda dasturchi amallarni bajaradigan buyruqlarni bajaradi.

Muntazam Bash bayonotlari o'qiladi va qobiq skripti deb ataladigan faylga kompilyatsiya qilinadi.

Unix bilan birgalikda u fayl nomlarini (joker belgilarni tekislash), protokollarni, hujjatlarni, direktivlarni almashtirishni va sinov mezonlari uchun yadro tuzilishini taniydi.

Bosh so'zlarda tilning sintaksisi va boshqa asosiy xususiyatlari csh va ksh dan yaratilgan.

Bash POSIX qobig'i emas, lekin u juda ko'p kengaytmalarga ega.

Qobiqning nomi qisqartirilgan

Ishlab chiquvchi buyruqlar qobig'idagi yorliq tugmasini bosganida, Bash dasturlar, fayllar va o'zgartirishlar nomlariga mos kelish uchun buyruq satrining oxirida avtomatik ravishda to'xtaydi.

Buyruqlar qatori tizimi nihoyatda sodda va ko'pincha ma'lum dasturlar uchun argumentlar va fayl nomlarini saqlaydigan funktsiyalardan iborat.

Bash sintaksisi juda keng, shu jumladan Bourne qobig'ida.

Muntazam Bash iboralari: arifmetik baholashning to'liq bo'linmalarini, ((...)) buyrug'i va $ ((...)) argumentini sintaksisga kiritish, bu kirish-chiqishni qayta yo'naltirishni soddalashtiradi.

Masalan, ulanishlarni (stdout) va nosozliklarni (stderr) operator qo'llab-quvvatlashi bilan sinxron ravishda qayta yo'naltirish mumkin.

  • Bourne qobig'ining pastki ekvivalentini kiritish osonroq "buyruq > fayl 2> & 1".
  • Bash oddiy Linux viruslari sintaksisini saqlab, jarayonni almashtirishni o'zgartiradi va an'anaviy ravishda fayl nomini turg'unlashtiradigan buyruq chiqishi (kirish) o'rnini bosadi.

"Funksiya" kalit so'zi olib tashlanganida, Bashning uyushtirishi Bourne va Korn skriptlari bilan bema'ni bo'ladi, chunki Korn qobig'ida statik "funktsiya" bilan bir xil muammo bor, lekin u qobiq berilgan funktsiyani noaniq qilishning bir xil sintaksisini qabul qiladi. , POSIX-jinni bo'lish.

Ushbu boshqa jihatlar orqali skriptlar Born va Korn tarjimonlari tomonidan kamdan-kam hollarda to'ldiriladi, chunki ular oddiy Bash viruslari bo'lgan robotlarni rejalashtirishda hisobga olinishi kerak bo'lgan murakkablikni tushunish bilan maxsus yozilmagan.

  • Assotsiativ massivlar AWK ga o'xshash indekslangan massivlarni qo'llab-quvvatlashga imkon beradi.

Bunday holda, 1-buyruq fonga joylashtiriladi & belgisi, u boshqaruv qobig'ini aylantiradi, chunki 2-buyruq oldingi planga joylashtiriladi.

Bash grep ning oddiy iboralarini o'tkazib yuborish va jarayon oldingi planda bo'lganda Ctrl+z tugmalarini kiritish orqali aylantirish mumkin.

  • Ishlarni bajarish orqali erishish mumkin bo'lgan fon rejimida ham, kutish rejimida ham barcha jarayonlar ro'yxati.

Jarayon bosqichini turli buyruqlar yordamida o'zgartirish mumkin.

"Fg" buyrug'i jarayonni birinchi o'ringa olib chiqadi va "bg" buyrug'i jarayonni fonga qo'yadi.

  • Bg" va "fg" qaysi jarayon davom etayotganini ko'rsatish uchun birinchi argument sifatida ish identifikatorini qabul qilishi mumkin. Jarayon unga signal yuborishdan oldin yakunlanadi. Ish identifikatori quyidagi ko'rsatmalar uchun javobgardir:

kill -s SIGKILL% 1 yoki kill-9%.

  1. Bash buyruqni ajratuvchilarga "aqlli konventsiya" ni qo'yadi, ya'ni pretsedentda buyruq tomonidan o'rnatilgan chiqish kodiga "kontingent" buyruqlarni belgilash.
  2. "Bashbug" deb nomlangan tashqi buyruq shellac tuzatishlari haqida xabar beradi.
  3. Buyruq chaqirilganda, u to'ldirilgan shaklga ega bo'lgan muxbir uchun reklama aktsiyalari uchun muharrirni ishga tushiradi.
  4. Shakl oddiy Bash ifodalarini global almashtirishni ta'minlab, Bash partiyalari yoki ehtimol boshqa elektron pochta manzillariga qo'llaniladi.
  5. Bash qayta ishlashni boshlaganida, u turli nuqta fayllarini o'zgartiradi.
  6. Tarjimonni sozlash va buyurtma qilish imkonini beradigan shunga o'xshash skript buyruqlarini qidiring, masalan:
  7. #!/bin/bash.
  8. Bash viruslari tomonidan topshiriqlar bilan yaratilgan ishga tushirish fayllari hech narsani o'z ichiga olmaydi.

Bash-ni -posix opsiyasi bilan bosish yoki skriptda -o posix to'plamini belgilash oddiy Bash skriningni POSIX 1003.2 standartiga to'liq mos keladigan qilib o'zgartiradi.

  1. Portativlik uchun mo'ljallangan Shell skriptlari, agar uni almashtirish niyatida bo'lsa, Bourne qobig'ini qabul qilishi mumkin.
  2. Bash an'anaviy Bourne qobig'i ta'minlamaydigan qo'shiq funktsiyalariga ega.
  3. Ularga aniq:
  4. Bosish uchun kengaytirilgan variantlar.
  5. Mashhur $() yozuvidan foydalanib buyruqlarni almashtirish.
  6. Bu funksiya POSIX 1003.2 ning bir qismidir.
  7. Qo'llarni kengaytirish.
  8. Massivlar va assotsiativ massivlar bilan amallar.
  9. Sinov tuzilishini to'xtatilgan qo'llar bilan kengaytirish.
  10. Muntazam Bash iboralarining arifmetik-baholash qurilishi "if" bilan.

Turli xil manipulyatsiya operatsiyalari bir qatorda.

Jarayonni almashtirish.

Operator oddiy virusga o'xshaydi.

"Bash" - Coprocessesning maxsus amalga oshirilishi.

  • Bash arifmetik iboralari yorliq tugmalarini belgilash va buyruq qatorini turli tugmalar birikmalari (Emacs) bilan tahrirlash uchun "readline" dan foydalanadi.
  • "set -o vi" ishga tushirilganda Vi bog'lashlari yoqilishi mumkin.
  • Qo'llarning kiritilishi, shuningdek, tortma deb ataladi, bu "C" qobig'idan ko'chirilgan funksiyadir.

Won muqobil kombinatsiyalar to'plamini yaratadi.

Shell skriptlari matnni formatlash uchun qo'shimcha belgilar yoki ketma-ketliklarni kiritmaslik uchun qo'shimcha muharrir dasturi tomonidan yaratilgan ASCII matn faylida saqlanishi kerak.

Masalan, qobiq skriptlarini yaratish uchun mos bo'lgan tahrirlovchilarga UNIX/Linux-da mavjud bo'lgan Emacs kabi dasturlar va Microsoft Windows-dagi Notepad, TextEdit va UltraEdit kabi dasturlar kiradi.

Yaxshi amaliyot - Bash skriptining birinchi qatoriga oddiy ketma-ketlikni, "#!

  • /Bin/bash”, bu skriptni ishga tushirish uchun kompyuterning fayl tizimidagi dasturlarning mutlaq yo'lini ko'rsatadi.

Shunday qilib, siz uni to'g'ridan-to'g'ri buyruq satrida bash buyrug'iga argument sifatida fayl nomini ko'rsatmasdan ishga tushirishingiz mumkin.

Tarjima uchun operatsion tizim va skriptning yozma ko'rsatmalari bo'lgan tarjima dasturining kiritilishi skriptning birinchi qatoriga, "#!" belgilar ketma-ketligidan so'ng darhol joylashtiriladi.

Boshqaruv tuzilishiga kiritilgan ko'rsatmalar bloklarini ajratish uchun zarur belgilar mavjud emas, masalan, iterativ boshqaruv tuzilmasida takrorlanishi mumkin.

Boshqa tomondan, blokning boshi va oxirini to'g'ri aniqlash imkonini beruvchi shunga o'xshash kalit so'zlar mavjud.

Ushbu kalit so'zlar dasturlar oqimini boshqarish uchun ishlatiladigan ko'rsatmalarda diqqat bilan tushuntirilgan.

Muntazam Bash iboralarining "moslik" sintaksisida ma'lum belgilar maxsus ma'noga ega, shuning uchun ular belgilar qatorida yoki buyruq argumenti sifatida mavjud bo'lsa, u holda ma'lum bir funktsiya yaratiladi.

  • Minimal soddalik bilan aytishimiz mumkinki, qobiq xuddi shu operatsiyani interaktiv tarzda yakunlaydigan dasturdir.
  • Keyin buyruq kiritilishini kirish sifatida baholaydi, buyruqning sintaktik jihatdan to'g'riligini tekshirish uchun uni baholaydi va uni o'rab oladi, so'ngra keyingi buyruqni tekshirish uchun aylanadi.

Bu jarayon qobiq login tugallanganligi va unga boshqa buyruqlar yuborilmasligini bildiruvchi signalni qabul qilganda tugaydi.

  • Shu nuqtada, qobiq dasturi tugaydi va operatsion tizim uchun mavjud xotira va boshqa mashina resurslarini tejaydi.

Shuning uchun qobiq interaktiv rejimda ishlaydi, teri buyrug'i va buyruqlar qatorida ko'rsatilgan parametrlarga kirish ma'lumotlarini oladi va buyruqning o'zi bilan tugaydi.

Belgi bir xil terminal oynasida ko'rsatiladi.

Qobiqga uzatiladigan teri buyrug'i Invio/Enter tugmasini bosish bilan tugaydi.

Siz bir qatorda bir nechta buyruqlarni berishingiz mumkin, ularning barchasini ";" belgisi bilan ajrating.

Bundan tashqari, har bir qatorni “\” belgisi bilan tugatish orqali buyruq kiritishni ikki yoki undan ortiq qatorga bo'lishingiz mumkin.

Yorliqlar dasturlashtirilganligiga va katlamali yorliqlar qatorlarni chegaralash uchun ishlatilishiga ishonch hosil qiling va u yoki bu belgilarni almashtirish skript tomonidan qabul qilingan sintaksisga asoslangan.

  • Bizning skriptlarimizda oyoqlarning va darvozalarning burishishi yanada muhimroq va Bash aybdor emas.
  • Bitta oyoqlar belgilar qatorlarini ajratish uchun ishlatiladi.
  • Tarjimon qatorning o'rniga kirmaydi va oddiygina vikorista belgilar ketma-ketligini oyoqlari bilan ajratadi.

Agar siz uy katalogingizda saqlangan "script.sh" nomli faylni tayyorlashingiz kerak bo'lsa, fayl o'rniga quyidagidan foydalanishingiz mumkin:

  • echo -n "Oggi e" il " 2 sana +%d/%m/%Y.

Bu juda oddiy skriptni buyruq satrida qobiq chaqiriladigan fayl nomini ko'rsatib ishga tushiring:

  • $ bash script.sh Oggi e"il 10/6/2011.

Qobiq boshqa buyruqlar chiqishini Bashning standart chiqishiga yo'naltiruvchi quvur orqali chiqish uchun buyruqlar ketma-ketligini qabul qilishi mumkin:

  • $ cat script.sh |

bash Oggi" 6/10/2011.

  • Siz “#!” bilan belgilangan Bash dasturlarining bir qator muntazam ifodalarini ko'rishingiz mumkin.

Skript uchun tarjimondan foydalanishning mutlaq usuli bu Bash-ni ishga tushirish va skriptni kirishga o'tkazish orqali uni to'g'ridan-to'g'ri OSsiz ishga tushirishdir:

$ cat script.sh #!/bin/bash echo -n "Oggi e" il " sana +%d/%m/%Y $ chmod 755 script.sh $ ls -l script.sh -rwxr-xr-x 1 marco foydalanuvchilari 49 18 aprel 23:58 script.sh $ ./script.sh Oggi e" il 10/6/2011.

Oqimli katalogda joylashgan “script.sh” faylida saqlanadigan skriptni to‘g‘ridan-to‘g‘ri chaqiruvchi oldingi qismning qolgan buyrug‘ida fayl nomidan oldin “./” nomini kiriting.

Kompilyatsiya qilinayotgan skript joylashgan katalogga yo'lni ko'rsatish kerak, chunki ko'pincha xavfsizlik nuqtai nazaridan joriy katalog kompilyatsiya qilinayotgan tashqi buyruqlarni aniqlash uchun qobiq mas'ul bo'lgan kataloglar ro'yxatiga kiritiladi. .

Bunday kataloglar ro'yxati turli xil oddiy Bash versiyalarida saqlanadi.

Bash yordamida ishlab chiquvchilar interaktiv veb-ma'lumotlardan, mustaqil Linux buyruq qatori ma'lumotlaridan hech qanday kechiktirmasdan foydalanishlari mumkin.

Buning uchun qoidalar talab qilinmaydi va foydalanuvchilar bir marta bosish orqali resurslarni va Azure yadrosini o'z ichiga olgan autentifikatsiya qilingan ish stantsiyasiga kirishni rad etishlari mumkin, agar ular g'olib bo'lsa Ko'proq Azure dasturlari, Azure Portal va Azure Documentation.

An'anaviy o'rta buyruq qatori o'rniga, ishni boshlashdan oldin asboblarni o'rnatish va tanlashning hojati yo'q va siz Bash yordamida ko'p kuch sarflashingiz mumkin.

Bash-da mavjud bo'lgan matn, yig'ilishlar, konteynerlar va chiqishlar kabi barcha CLI vositalariga CLI 2.0 yordamida xavfsiz va oson vosita autentifikatsiyasi bilan kirish mumkin. Biz oddiy Bash viruslarini ko'rib chiqdik.

Ustaligingizga omad!

Muntazam viraz

- harflar, raqamlar va metabelgilar deb nomlanuvchi maxsus belgilar birikmasidan iborat matn shabloni.

\ | () { } ^ $ * + ? . < >

Muntazam viruslarning yaqin qarindoshlari ko'pincha yadro fayllarida joylashgan joker viruslardir.

    Muntazam iboralar asosan matnni tuzatish va qidirish maqsadida vikorizatsiya qilinadi.

    Sintaksisni tahlil qilish uchun keng qo'llaniladi.

    UNIX foydalanuvchilari grep, sed, awk (yoki gawk) va ed kabi oddiy viruslar bilan yaxshi tanish.

    Ushbu dasturlardan yoki ularning analoglaridan foydalanib, siz quyidagi ko'rsatmalarni sinab ko'rishingiz va tekshirishingiz mumkin.

    (X)Emacs va Vi kabi matn muharrirlari ham muntazam ifodalarga faol hissa qo'shadilar.

Muntazam viruslarning eng xilma-xilligi Perl tilida bo'lishi mumkin.

Dasturiy ta'minotni ishlab chiquvchilar va tizim ma'murlari uchun muntazam viruslarni bilishdan qochish muhimdir.

Bo'sh qatorlar keyingi qator bilan bir xil tartibda joylashtirilgan: bir yoki bir nechta bo'sh qatorlar bo'sh qatorning yoniga joylashtirilishi kerak;

Bo'sh qatorda bo'sh qatorlar teri belgisi oldiga, shuningdek, qatorning oxiriga joylashtiriladi.

Muntazam iboralar ham bir xil konstruksiyaga ega (n, m), ya’ni konstruksiyadan oldin kelgan belgi n dan m martagacha qatorda paydo bo‘ladi.

m raqamini tashlab qo'yish uzluksizlikni hurmat qilish bilan bog'liq.

Tobto.

Qurilishning xususiy turlariga quyidagi yozuvlar kiradi: (0,), (1,) va (0,1).

Birinchisi *, ikkinchisi - metasimbol +, uchinchisi -?

.

Har xil turdagi kvantlardan foydalangan holda bu tenglik darajasini saqlab qolish oson.

Bundan tashqari, konstruksiya (n) belgining aniq n marta keskinlashtirilganligini bildiradi.

Turli bo'linish belgilari va matematik belgilarning metaramzlari sifatida vikariyalar bilan bog'liq holda qo'shimcha metasimbol \ (teskari qiyshiq chiziq) kiritiladi, u metasimboldan oldin yozilganda qolganini asl belgiga aylantiradi.

Tobto.?

- bu miqdor ko'rsatkichi va \?

- oziq-ovqat belgisi.

Guruh< начало слова >Miqdor ko'rsatkichlarining tavsiflari, aytilganidek, ularga eng yaqin chap qo'l belgisi (qolgan oldingi) bo'yicha ishlaydi.

Tobto. Bundan tashqari, metabelgilar (i) ishlatiladigan guruhlarni chetlab o'tish mumkin.

Bu belgilar guruhga birlashtirilgan pastki ifodani ifodalaydi, keyinchalik u kvantni tashkil qiladi.

Butt:

[i] (to'g'ri kamon) metasimbollarida joylashtirilgan maxsus dizayn ushbu joyda muntazam ifodada paydo bo'lishi mumkin bo'lgan va ketma-ket nomlanadigan belgilar variantlarini qayta yozish imkonini beradi.

To'rtburchaklar qo'llarning o'rtasida barcha metasimbollar oddiy belgilar sifatida ko'rib chiqiladi va belgilar - (minus) va ^ yangi ma'nolarga ega bo'ladi: birinchisi ikkita ko'rsatkich orasidagi belgilarning uzluksiz ketma-ketligini belgilashga imkon beradi, ikkinchisi esa mantiqiyroq " emas” (kesishma).

Bu dumbalarga qarashning eng oson yo'li:

Kichik lotin harflaridan:

Lotin alifbo-raqamli belgi (a dan z gacha, A dan Z gacha va 0 dan 9 gacha):

lotin alifbo-raqamli bo'lmagan belgi:

<+>

[^a-zA-Z0-9]

so'z bo'ling (defis, matematik belgilar va raqamlarsiz):

Muvofiqlik va soddalik uchun quyidagi qisqartmalar kiritiladi:

\d raqami (bu virusni bildiradi);

    \D raqam emas (tobto[^0-9]);

    Lotin so'zi (harf-raqamli);

    \W lotin alifbo-raqamli so'z bo'lmagan bo'shliqsiz belgilar ketma-ketligi ([^a-zA-Z0-9]);

\s empty gap [\t\n\r\f], keyin.

kliringlar, jadvallar va boshqalar.

\S - noto'g'ri bo'sh joy ([^ \t\n\r\f]).

Joker belgilar bilan bog'lash E-pochta manzillarini, telefon raqamlarini va hokazolarni tekshirish imkonini beruvchi oddiy kalit so'zlarning katta to'plamlariga ega veb-saytlar mavjud.

+(\.+)*@+(\.+)+

Bilimning guruh belgilari bilan, mabut, kozhen koristuvach. "

Joker belgining misoli *.jpg yozuvidir, bu jpg kengaytmali barcha fayllarni bildiradi.<+(\.+)*@+(\.+)+\>

Guruh belgilarining muntazam ifodalari qanday?

+://

Buning oqibatlarini joker belgilar bilan etarli virusni oddiy virusga aylantirishning uchta qoidasi bilan bog'lash mumkin:

bilan almashtiring.*<"][^>almashtirilsinmi?

yoqilgan.

Metabelgilar bilan qochib ketgan barcha belgilarni kirpiksiz variantlari bilan almashtiring.

To'g'ri, muntazam ravishda ko'rsatiladigan yozuv * rangli emas va bo'sh qatorni beradi, chunki

bo'sh qator yiliga bir necha marta takrorlanishini bildiradi.

Va o'q.* (qo'shimcha belgini iloji boricha ko'p marta takrorlang, shu jumladan 0) joker belgilar bo'lmaganda * belgisini almashtirish orqali oddiygina oldini olish mumkin.

grep -E "cow|vache" * >/ dev/ null && echo "Sigir topildi"

Bu erda E varianti muntazam ifodalarning kengaytirilgan sintaksisini qo'llab-quvvatlash uchun ishlatiladi.

Matn Jan Borsodining HOWTO-regexps.htm faylidagi maqolasiga asoslangan

Oddiy iboralar matnda naqsh izlash, vazifani yanada aniqroq qilish uchun yig'ilishi mumkin bo'lgan qatorlarni qayta ishlash va o'zgartirish uchun juda foydali vositadir.

  • Asosiy eksa:
  • Kiritilgan matnni tekshirish;
  • Fayldagi matnni almashtirishni qidiring;
  • Ommaviy fayl nomini o'zgartirish;
  • Apache kabi xizmatlar bilan o'zaro aloqa;

Shablonga mos kelishini tekshirish uchun qatorni tekshiring.

Bu to'liq ro'yxat emas, muntazam yozuvlar sizga ko'proq ishlash imkonini beradi.

Biroq, yangi koristuvachlar uchun hidlar juda katlanadigan bo'lishi mumkin, ularni qoliplash uchun bo'laklar maxsus tilga bo'ysunadi.

  • Har qanday mumkin bo'lgan muammolar bo'lsa, muntazam Linux viruslari ma'lum bo'lishi va tizim ma'muri tomonidan hisobga olinishi kerak.
  • Ushbu maqola yangi boshlanuvchilar uchun oddiy bash iboralarini ko'rib chiqadi, shunda siz ushbu vositaning to'liq imkoniyatlarini o'rganishingiz mumkin.

Oddiy iboralar ikki xil belgilarga ega bo'lishi mumkin:

asl harflar;

metabelgilar. Asosiy belgilar harflar, raqamlar va bo'linish belgilari bo'lib, ulardan har qanday qatorlar hosil bo'ladi.

Barcha matnlar harflardan iborat va siz ulardan muntazam ravishda matndagi kerakli pozitsiyani topish uchun foydalanishingiz mumkin. Asosiy belgilar harflar, raqamlar va bo'linish belgilari bo'lib, ulardan har qanday qatorlar hosil bo'ladi.

  • \ Metasimbollar boshqa narsadir, ularning o'zlari muntazam iboralarga kuch beradi.
  • ^ Metambollar yordamida siz bitta belgini qidirmasdan ko'proq pul topishingiz mumkin.
  • $ Siz belgilar kombinatsiyasini qidirishingiz, ularning dinamik kuchini sozlashingiz va diapazonlarni tanlashingiz mumkin.
  • * Barcha maxsus belgilarni ikki turga bo‘lish mumkin: asosiy belgilar o‘rnini bosuvchi o‘rnini bosuvchi belgilar va belgi necha marta takrorlanishi mumkinligini ko‘rsatuvchi operatorlar.
  • + Muntazam virazu vigladatime sintaksisi quyidagicha:
  • ? asosiy_belgi
  • maxsus belgi_operator maxsus_belgini_almashtirish
  • - maxsus belgilarning harflari orqa qiyadan boshlanadi, shuningdek, har qanday kesma belgisidan maxsus belgini tanlash kerak;- qatorning qulog'iga ishora qiladi;
  • . - qatorning teskari tomoni yonidagi istalgan belgi;
  • - ibodatxonalarda qandaydir ramz, ko'rsatma bo'lish;
  • x|y- x belgisi yoki y belgisi;
  • [^az]- ibodatxonalarda ko'rsatilganlardan tashqari, qandaydir ramz bo'ling;
  • - belgilangan diapazondan istalgan belgi;
  • [^a-z]- diapazonda mavjud bo'lmagan har qanday belgi;
  • \b- bo'shliqli so'zlar orasiga ishora qiladi;
  • \B- belgi so'zning o'rtasida ekanligini bildiradi, masalan, ux uxb yoki smokingdan qochib ketgan, lekin Linuxdan qochmagan;
  • \d- belgi son ekanligini bildiradi;
  • \D- raqamli bo'lmagan belgi;
  • \n- qatorni teskari aylantirish belgisi;
  • \s- belgilardan biri, bo'sh joy, bo'sh joy, tab va boshqalar;
  • \S- bo'shliqda istalgan belgi bo'lishi;
  • \t- Tab belgisi;
  • \v- Vertikal yorliq belgisi;
  • \w- har qanday harf belgisi, shu jumladan kreslo;
  • \V- qandaydir harf belgisi, kresloning kremi bo'lishi;
  • \uXXX- Unicdoe belgisi.

Harfdan oldin maxsus belgilar kelishini ko'rsatish uchun ularning orasiga ortiqcha oro bermay qo'yish kerak.

To'g'ri va agar siz asosiy belgi sifatida chiziqsiz kiritilgan maxsus belgi qo'shmoqchi bo'lsangiz, u holda chegaraga chiziq qo'shishingiz kerak.

Masalan, siz 1+2=3 matn qatorini bilmoqchisiz.

Agar siz ushbu qatorni muntazam ifoda sifatida ko'rsangiz, hech narsa topa olmaysiz, chunki tizim plyusni maxsus belgi sifatida izohlaydi, bu oldingi birlik bir yoki bir necha marta takrorlanishi mumkinligini ko'rsatadi. Shuning uchun ekranga chiqish kerak: 1 \+ 2 = 3. Ekransiz bizning oddiy ifodamiz 11=3 qator yoki 111=3 yoki boshqa narsani ko'rsatadi. Guruchni birining oldiga qo'yishning hojati yo'q, chunki bu maxsus belgi emas.

Vikoristannya muntazam viruslarni qo'llang

Endi biz asoslarni ko'rib chiqdik va siz hamma narsa qanday ishlashini bilasiz, endi oddiy Linux grep ifodalari haqidagi bilimlarni amalda mustahkamlash mumkin emas.

Ikkita juda jigarrang maxsus belgilar - tse ^ va $ qatorning boshi va oxirini bildiradi.

Misol uchun, biz tizimimizda ro'yxatdan o'tgan nomlari s bilan boshlangan barcha hisoblarni olib tashlamoqchimiz.

Keyin oddiy virusdan foydalanishingiz mumkin

Xuddi shu natijani Vikorist belgisi "|" yordamida olib tashlash mumkin.

Keyin oddiy virusdan foydalanishingiz mumkin

Birinchi variant diapazonlar uchun ko'proq mos keladi, ikkinchisi esa asosiy maqsadlar uchun ko'proq ishlatiladi:

Keling, ismlari uchta belgidan ko'proq bo'ladigan barcha qahramonlarni tanlaylik.

Koristuvachning nomi qo'sh qalpoq bilan tugaydi.

Ikkilikdan oldin uch marta takrorlanadigan har qanday harf belgisi bo'lishi mumkinligini aytishimiz mumkin:

egrep "^\w(3):" /etc/passwd

Web analytics Web analytics (inglizcha: Web analytics) - bu o'lchash, yig'ish, tahlil qilish, taqdim etish va izohlash...