В тази статия ви показваме да стартирате предварително търсене на низове с помощта на Grep с регулярен израз, като ви дава 10 практически примера за неговите реализации. Много примери, обсъдени в тази статия, имат практически последици, което означава, че можете да ги използвате в ежедневното си програмиране на Linux. Следващите примери описват някои примери за регулярни изрази за често търсени модели.
Пример 1: Намерете един наемател в текстов файл
За да изведете редове във файла „книга“, които съдържат знак „$“, напишете:
$ grep '\ $' книгаПример 2: Намерете единичен низ в текстов файл
За извеждане на редове във файла „книга“, който съдържа низа „$ 14.99 ', тип:
$ grep '\ $ 14 \.99 'книгаПример 3: Намерете един специален наемател в текстов файл
За да изведете редове във файла „книга“, които съдържат знак „\“, напишете:
$ grep '\\' книгаПример 4: Съвпадение на линии, започващи с определен текст
Използвайте 'ˆ' в регулярния израз, за да означите началото на ред.
За да изведете всички редове в '/ usr / dict / words', започващи с 'pro', напишете:
$ grep 'ˆpro' / usr / dict / wordsЗа да изведете всички редове във файла „книга“, които започват с текста „в началото“, независимо от случая, напишете:
$ grep -i 'в началото' книгаЗАБЕЛЕЖКА: Тези регулярни изрази бяха цитирани със символи „; това е така, защото някои черупки иначе третират символа „ˆ“ като специален „метасимвол“
В допълнение към търсенето на думи и фрази, можете да използвате grep за търсене на сложни текстови модели, наречени регулярни изрази. Регулярният израз - или „regexp“ - е текстов низ от специални символи, който определя a комплект от модели, които да съвпадат.
Технически погледнато, моделите на думите или фразите са регулярни изрази - просто много прости. В регулярен израз повечето символи - включително букви и цифри - представляват себе си. Например моделът на regexp 1 съответства на низа „1“ и на шаблона момче съответства на низа „момче“.
Има редица запазени знаци, наречени метасимволи, които не се представят в регулярен израз, но имат специално значение, което се използва за изграждане на сложни модели. Тези метасимволи са както следва: ., *, [, ], ˆ, $ и \. Добре е да се отбележи, че подобни метасимволи са често срещани сред почти всички разпространени и специални дистрибуции на Linux. Ето една добра статия, която обхваща специални значения на метасимволите и дава примери за тяхното използване.
Пример 5: Съвпадащи линии, завършващи с определен текст
Използвайте „$“ като последния символ на цитирания текст, за да съответства на този текст само в края на ред. За да изведете редове във файла „върви“, завършващ с удивителен знак, въведете:
$ grep '!$ 'вървиПример 6: Съвпадащи линии с определена дължина
За да съответствате на линии с определена дължина, използвайте този брой на '.„символи между„ ˆ “и„ $ “- например, за да съвпаднат всички редове с ширина два знака (или колони), използвайте„ ˆ… $ “като регулярно изражение, за да търсите.
За да изведете всички редове в '/ usr / dict / words' с ширина точно три знака, напишете:
$ grep 'ˆ ... $' / usr / dict / wordsЗа по-дълги редове е по-полезно да се използва различна конструкция: 'ˆ.\ номер \ $ ', където числото е броят на редовете, които трябва да съвпадат. Използвайте ',' за да зададете диапазон от числа.
За да изведете всички редове в '/ usr / dict / words', които са с ширина точно дванадесет знака, въведете:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsЗа да изведете всички редове в '/ usr / dict / words', които са двадесет и два или повече знака, въведете:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsПример 7: Съвпадащи линии, които съдържат някой от някои регулярни изрази
За да съответствате на редове, които съдържат някой от редица регулярни изрази, посочете всеки от регулярните изрази, които да търсите между операторите на редуване ('\ |') като регулярния израз за търсене на. Ще бъдат изведени редове, съдържащи някой от дадените регулярни изрази.
За да изведете всички редове в „плейбой“, който съдържа или шаблоните „книгата“ или „тортата“, напишете:
$ grep 'the book \ | cake' playboyПример 8: Съвпадащи линии, които съдържат всички някои регулярни изрази
За извеждане на редове, които съвпадат всичко на редица регулярни изрази, използвайте grep за извеждане на редове, съдържащи първия регексп, който искате да съчетаете, и пренасочете изхода към grep с втория регексп като аргумент. Продължете да добавяте канали за греп търсене на всички регулярни изрази, които искате да търсите.
За да изведете всички редове в „плейлист“, който съдържа и двата модела „брега“ и „небето“, независимо от случая, напишете:
$ grep -i 'the shore' плейлист | grep -i небеПример 9: Съвпадащи линии, които съдържат само определени знаци
За да съчетаете редове, които съдържат само определени символи, използвайте регулярния израз „ˆ [символи] * $“, където символите са тези, които трябва да съвпадат. За да изведете редове в '/ usr / dict / words', които съдържат само гласни, напишете:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsОпцията '-i' съвпада с символи, независимо от регистъра; така че в този пример всички гласни символи се съвпадат, независимо от регистъра.
Пример 10: Намиране на фрази независимо от разстоянието
Един от начините за търсене на фраза, която може да възникне с допълнителни интервали между думите или през прекъсване на ред или страница, е да премахнете всички подавания на редове и допълнителни интервали от входа и след това да грепвате, че. За да направите това, поставете входа към tr с "\ r \ n: \> \ | -" като аргумент на опцията '-d' (премахване на всички прекъсвания на редове от входа); прекарайте това към fmt филтъра с опцията '-u' (извеждане на текста с равномерно разстояние); и тръба, която да grep с модела за търсене.
За да търсите в прекъсванията на редове за низа „едновременно с„ във файла „docs“, въведете:
$ котка документи | tr -d '\ r \ n: \> \ |-'| fmt -u | grep "едновременно с"
Обобщение
В тази статия разгледахме 10 практически примера за използване на командата Grep Linux за търсене и намиране на низове в текстов файл. По пътя научихме как да използваме регулярни изрази заедно с Grep за извършване на сложни търсения в текстови файлове. Вече имате по-добра представа за това колко мощни са функциите за търсене на Linux.
Ето допълнителни ресурси за тези, които се интересуват да научат повече за програмирането на Linux:
Ресурси за системни администратори
- Ръководство за администриране на Linux система - Какво представлява операционната система Linux и как работи
- Ръководство за системно администриране на Linux - Общ преглед на виртуалната памет на Linux и кеша на дисковия буфер
- Ръководство за администриране на Linux система - Най-добри практики за наблюдение на Linux системи
- Ръководство за администриране на системна система Linux - Най-добри практики за извършване на зареждания и изключвания на Linux
- Linux System Admin Guide - Най-добри практики за създаване и управление на резервни операции
Ресурси за програмисти на ядро на Linux
- Как работи управлението на паметта на операционната система Linux
- Изчерпателен преглед на процесите на операционната система на ядрото на Linux
- Какви са механизмите зад управлението на задачи на ядрото на Linux
Речник на файловата система на Linux
Изчерпателен преглед на това как работи Linux системата за файлове и директории