Linux grep регулярные выражения

Linux grep регулярные выраженияВ скриптах, применяемых для автоматизации и однострочниках часто применяются регулярные выражения позволяющих тем или иным образом отсортировать результата поиска — с регулярными выражениями часто работают при помощи утилит grep, sed и cut. В настоящем материале рассматриваются специфические для grep регулярные выражения.

Прежде всего создадим файл в который поместим некоторые данные, которые будем отбирать в различных комбинациях используя grep

 

mcedit regex.txt

remote
support
remote-tech-support
remote-tech-support.ru

Remote-tech-support
Remote

I’m using Ubuntu
Linux is a great OS

grep регулярные выражения — базовое использование

 

grep remote regex.txt

remote
remote-tech-support
remote-tech-support.ru

grep -i remote regex.txt

remote
remote-tech-support
remote-tech-support.ru
ReMoTe
Remote-tech-support
Remote

grep [Rr]emote regex.txt

remote
remote-tech-support
remote-tech-support.ru
Remote-tech-support
Remote

Вместо первого знака в выражении подставляется любой из символов в квадратных скобках, поэтому ReMoTe в результатах поиска нет

Используя echo дописываем в файл несколько строк которые понадобятся для дальнейших экспериментов

echo Tommy >> regex.txt

echo Timmy >> regex.txt

echo timmy >> regex.txt

echo tommy >> regex.txt

grep -i Timmy regex.txt

Timmy
timmy

grep -i T[io]mmy regex.txt

Tommy
Timmy
timmy
tommy
Tommy

Начало и конец шаблона поиска в регулярных выражениях

 

Добавляем еще строки в файл

echo ‘great place to learn is webs itr remote-tech-support’ >> regex.txt

echo ‘just astring that ends at remote’ >> regex.txt

Знак ^ указывает, на необходимость начинать строку, которая подпадет под регулярное выражение с символов следующих непосредственно за знаком

grep ^remote regex.txt

remote
remote-tech-support
remote-tech-support.ru

Применимы любые сочетания с правилами рассмотренными ранее

grep ^[Rr]emote regex.txt

remote
remote-tech-support
remote-tech-support.ru
Remote-tech-support
Remote

Знак $ на конце слова или выражения означает, что подпадание под regex будет только в случае если слово/выражение оканчивается символами, стоящими перед знаком доллара

grep ^[Rr]emote$ regex.txt

remote
Remote

grep emote$ regex.txt

remote
Remote
just astring that ends at remote

Регулярные выражения с числами

 

Добавим в файл строки, содержащие числа

echo ‘random number 349287923747’ >> regex.txt

echo ‘today is march 16’ >> regex.txt

Искать их можно следующим образом:

grep [0-9] regex.txt

random number 349287923747
today is march 16

Как и ранее возможны сочетания правил:

grep [0-9]$ regex.txt

random number 349287923747
today is march 16

Последний результат из выборки можно исключить задав необходимость использования минимум трех числовых значений в конце выражения

grep [0-9][0-9][0-9]$ regex.txt

random number 349287923747

Следующая команда выведет все пустые строки в документе

grep ^$ regex.txt

 

Практическое применение команде можно найти инвертируя ее — в выводе будут все строки, содержащие какие-либо значения

grep -v ^$ regex.txt

Extended grep

grep понимает некоторое количество регулярных выражений, тем не менее — в случае если используются сколько-нибудь сложные регулярные выражения следует использовать расширенный grep добавляя ключ -e (-E). Регулярные выражения следует помещать в кавычки или backticks

grep -E ‘[A-Z][a-z]+b’ test.txt

Флаги grep

Помимо -E часто используются и другие флаги. Самые часто применяемые:

-F — не использовать регулярные выражения
-v — не учитывать при поиске регистр
-R -рекурсивный поиск по всех вложенных каталогах с переходом по символьным ссылкам
-r — рекурсивный поиск по всех вложенных каталогах без перехода по символьным ссылкам

Друзья помогите этому контенту стать доступнее в социальных сетях.

Не проходи мимо жмакни по кнопке возможно кому то еще он будет полезен!