Linux grep команданың үлгісінің мысалдары

Кіріспе

Linux grep пәрмені кірісті сүзу әдісі ретінде пайдаланылады.

GREP Global Regular Expression Printer дегенді білдіреді және оны тиімді пайдалану үшін сіз тұрақты өрнектер туралы білуіңіз керек.

Осы мақалада сізге grep пәрменін түсінуге көмектесетін бірқатар мысалдарды келтіремін.

01-ден 09-ге дейін

GREP көмегімен файлдағы жолды қалай іздеу керек

Linux grep командасы.

Төмендегі балалар кітабының атаулары бар кітаптар деп аталатын мәтіндік файлды елестетіңіз:

Барлық кітаптарды тақырыпта «The» сөзімен табу үшін келесі синтаксисті қолданасыз:

grep кітаптар

Келесі нәтижелер қайтарылады:

Әрбір жағдайда «The» сөзі көрсетіледі.

Іздестіру регистрін ескеру керек, егер тақырыптардың бірі «The» орнына «the» болса, онда ол қайтарылмайды.

Ілмекті елемеу үшін келесі қосқышты қосуға болады:

кітаптарды - ньюте-кейсті

Сондай-ақ, -i қосқышын келесідей пайдалануға болады:

кітаптар

02/09

Ғаламдық карталарды пайдалану арқылы файлда жолды іздеңіз

Grep командасы өте күшті. Нәтижелерді сүзу үшін көптеген үлгі сәйкестігін қолдана аласыз.

Бұл мысалда файлдағы жолды қойылмалы таңбаларды пайдаланып қалай іздеу керектігін көрсетемін.

Шотландиялық орындардың аттары бар орындар деп аталатын файлыңыз бар екенін елестетіңіз:

абердиндер

aberystwyth

aberlour

inverurie

инвернесс

newburgh

жаңа бұғы

жаңа галлоуэй

Глазго

Эдинбург

Егер инвермен бірге барлық орындарды табуды қаласаңыз, келесі синтаксисті пайдаланыңыз:

grep inver * орындары

Жұлдызшаға (*) қойылмалы таңба 0 немесе көп. Сондықтан, сізде инвер деп аталатын орын немесе инверт деп аталатын орын болса, екеуі де қайтарылады.

Пайдалануға болатын тағы бір қойылмалы таңба - бұл кезең (.). Мұны бір әріпке сәйкестендіру үшін пайдалануға болады.

grep inver.r орындары

Жоғарыда көрсетілген команданың инверури және инверерия деп аталатын жерлерді табуы мүмкін, бірақ инверсияны таба алмайды, себебі бір ғана кезеңмен белгіленген екі р-нің арасында тек бір қойылмалы таңба болуы мүмкін.

Қойылмалы уақыт кезеңі пайдалы, бірақ сіз іздеген мәтіннің бөлігі болғанда қиындық тудыруы мүмкін.

Мысалы, домен атауларының осы тізіміне қараңыз

Сізге мына синтаксисті пайдалана отырып іздеуге болады:

grep * туралы * домен атаулары

Егер тізімде келесі атау болса, жоғарыда көрсетілген пәрмен төмендейді:

Сондықтан келесі синтаксисті қолдануға болады:

grep * about.com домендік аттары

Келесі аты бар домен болмаса, бұл жақсы жұмыс істейді:

aboutycom.com

Интернеши терминін шынымен іздестіру үшін нүктеден қашу қажет:

grep * туралы домен атаулары

Сізге нөлдік немесе бір таңбаға арналған сұрақ белгісі көрсетілетін соңғы қойылмалы карта.

Мысалға:

grep-ber placenames

Жоғарыда көрсетілген команданың абердинді, абериствитті немесе тіпті бервикті қайтару керек еді.

03 09

Жолдарды басында және жолдың соңында іздеу grep

Карат (^) және доллар ($) белгісі жолдардың басында және соңында үлгілерді іздеуге мүмкіндік береді.

Төмендегі команданың аттары бар футбол деп аталатын файлды елестетіңіз:

Манчестермен басталған барлық командаларды табу керек болса, келесі синтаксисті қолданасыз:

Манчестер командалары

Жоғарыда аталған команда Манчестер Сити және Манчестер Юнайтедті қайтарады, бірақ Манчестер ФК емес.

Сонымен қатар, келесі синтаксисті пайдалана отырып, Біріккенпен аяқталатын барлық командаларды табуға болады:

grep United $ командасы

Жоғарыда аталған команда Манчестер Юнайтед пен Ньюкасл Юнайтедті қайтарады, бірақ Манчестер ФК емес.

04 09

Мәтіндерді санау grep пайдалану

Егер үлгіге сәйкес келетін нақты сызықтарды grep арқылы қайтарғыңыз келмесе, бірақ келесі синтаксистің қанша екенін білу керек:

grep -c үлгі кіру файлы

Егер үлгіні екі рет теңестірсе, онда 2-нөмір қайтарылады.

05 09

Grep арқылы сәйкес келмейтін барлық шарттарды табу

Төменде келтірілген елдермен орын атауларының тізімін елестетіңіз:

Colwyn бухасында онымен байланысы жоқ ел екенін байқаған шығарсыз.

Елді бар барлық жерлерді іздеу үшін келесі синтаксисті қолдануға болады:

grep жер $ орындары

Нәтижелер қайтарылады, егер Colwyn бухты қоспағанда барлық орындар болады.

Бұл жердегі (ғылыми емес) аяқталатын жерлерде ғана жұмыс істейді.

Таңдауды келесі синтаксисті пайдаланып инвертировать аласыз:

grep -v жер $ орындары

Бұл жермен аяқталмаған барлық жерлерді табады.

06 09

Файлдарда бос жолдарды қалай табуға болады grep

Сізде бос жолды тапқан кезде файлды оқуды тоқтататын үшінші тарап қолданбасы арқылы кіріс файлы бар екенін елестетіңіз:

Бағдарлама ливерпульден кейін жолға шыққанда, colwyn бухты толығымен жіберіп алған мағынаны оқу тоқтатылады.

Келесі синтаксисі бар бос жолдарды іздеу үшін grep функциясын пайдалана аласыз:

$ grep ^ орындары

Өкінішке орай, бұл пайдалы емес, себебі ол бос жолдарды қайтарады.

Әрине, бос жолдардың санын тексеру ретінде файлды келесідей жарамды деп санай аласыз:

grep -c ^ $ орындары

Алайда, оларды ауыстыру үшін бос жолдар бар сызық нөмірлерін білу пайдалы болар еді. Мұны келесі пәрменмен орындауға болады:

grep -n ^ $ орындары

07 09

Үлкен немесе кіші әріп таңбаларын жолдарды іздеу

Grep функциясын пайдалану файлдағы қай жолдарда келесі синтаксисті пайдаланатын бас әріптерді анықтай аласыз:

grep '[AZ]' файл атауы

Шаршы жақшалар [] таңбалар ауқымын анықтайды. Жоғарыда келтірілген мысалда ол A және Z арасындағы кез келген таңбаға сәйкес келеді.

Сондықтан кіші әріп таңбаларына сәйкес келу үшін келесі синтаксисті қолдануға болады:

grep '[az]' файл атауы

Егер тек әріптер мен сандық емес немесе басқа таңбалармен сәйкес келгіңіз келсе, келесі синтаксисті қолдануға болады:

grep '[a-zA-Z]' файл атауы

Сандарды келесідей етіп жасауға болады:

grep '[0-9]' файл атауы

08 09

Қайталанатын үлгіні іздеу grep пайдалану

Қайталанатын үлгіні іздеу үшін, бұйра жақшаларды {} пайдалануға болады.

Сізде келесідей телефон нөмірлері бар файлды елестетіңіз:

Сіз білесіз бе, бірінші бөлігінде үш сан болуы керек және сіз осы үлгіге сәйкес келмейтін жолдарды табғыңыз келеді.

Алдыңғы мысалдан [0-9] файлдағы барлық нөмірлерді қайтаратындығын білесіз.

Бұл жағдайда үш саннан басталатын сызықшалар, кейінгі сызықша (-) басталуын қалаймыз. Мұны келесі синтаксиспен орындауға болады:

grep «^ [0-9] [0-9] [0-9] -» сандар

Алдыңғы мысалдардан белгілі болғандай, карат (^) сызық келесі үлгіден бастау керек дегенді білдіреді.

[0-9] 0-ден 9-ға дейінгі кез келген санды іздейді. Бұл үш рет енгізілгендіктен, ол 3 нөмірге сәйкес келеді. Ақыр соңында, сызықша үш сызықтың табысқа жетуі керек дегенді білдіреді.

Кесетін жақшаларды пайдалана отырып, сіз іздеуді келесідей төмендете аласыз:

grep «^ [0-9] \ {3 \} -» сандар

Слэш {өрнектің қалыпты өрнектің бөлігі ретінде жұмыс істейтіндіктен, бірақ мәні бойынша бұл 0-9 (3) дегенді білдіреді, ол 0-ден 9-ға дейінгі кез-келген санды үш рет білдіреді.

Бүктелген кронштейндер келесідей пайдаланылуы мүмкін:

{5,10}

{5,}

{5,10} ізделетін таңба кем дегенде 5 есе қайталануы керек, бірақ 10-дан көп емес, ал 5-тен 5 таңбадан кем емес қайталанады.

09 09

Басқа командалардың нәтижесін пайдалану grep

Содан бері біз жеке файлдардағы үлгіні сәйкестендіруге қарадық, бірақ grep басқа командалардан шығуды үлгіні сәйкестендіру үшін енгізу ретінде пайдалана алады.

Мұның тамаша мысалы - белсенді процестерді көрсететін ps командасын қолдану.

Мысалы, келесі пәрменді іске қосыңыз:

ps -ф

Жүйеңіздегі барлық іске қосылған процестер көрсетіледі.

Белгілі бір іске қосу процесін іздестіру үшін grep-ді келесідей пайдалануға болады:

ps -ef | grep firefox

Резюме

Grep командасы Linux-ның негізгі пәрмені болып табылады және ол оқу құндылығы болып табылады, себебі терминал пайдаланылған кезде файлдар мен процестерді іздеу кезінде сіздің өміріңіз әлдеқайда оңай болады.