Найти тему
Игорь Сотников

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ В LINUX. Часть 2.

Оглавление

EGREP (EXTENDED GREP)

man egrep - отошлет к справке по grep.

Данная команда позволяет использовать более расширенный набор шаблонов. Рассмотрим следующий пример команды:

egrep '^(b|d)' file . txt

Шаблон заключается в одинарные кавычки, для того чтобы экранировать символы, и команда egrep поняла, что это относится к ней и воспринимала выражение как шаблон. Сам же шаблон означает, что поиск будет искать слова, в начале строки (знак ^) содержащие букву b или d.

-2

Мы видим, что команда вернула слова, начинающиеся с буквы b или d. Рассмотрим другой вариант использования команды egrep . Например:

egrep '^[a-k]' file . txt

-3

Получим все слова, начинающиеся с "a" по "к". Знак "[] " - диапазона. Как мы видим слова, начинающиеся с большой буквы, не попали. Все эти регулярные выражения очень пригодятся, когда мы что-то ищем в файлах логах.

Усложним еще шаблон. Возьмем следующий:

egrep '^[a-k]|[A-K]' file . txt

Усложняя выражение, мы добавили диапазон заглавных букв сказав команде grep искать диапазон маленьких или диапазон больших букв с начала строки.

-4

Вот теперь все хорошо. Слова с Заглавными буквами тоже отобразились.

Как вариант egrep можно запускать просто grep с ключиком -e.

ПРО FGREP

man fgrep - отошлет к справке по grep. Команда fgrep не понимает регулярных выражений вообще.

Получается следующим образом если мы вводим: egrep c$ file.txt . То команда согласно шаблону, ищет в файле букву "c" в конце слова. В случае же с командой fgrep c$ file.txt , команда будет искать именно сочетание "с$". Т.е. команда fgrep воспринимает символы регулярных выражений, как обычные символы, которые ей нужно найти, как аргументы.

-5

РЕКУРСИВНЫЙ RGREP

Создадим каталог mkdir folder . Создадим файл great.txt в созданной директории folder со словом Hello при помощью команды echo "Hello" folder/great.txt

И если мы скажем grep Hello * , поищи слово Hello в текущей директории. Получится следующая картина.

-6

Как мы видим grep не может искать в папках. Для таких случаев и используется утилита rgrep.

rgrep Hello *

Дает следующую картину.

-7

Совершенно спокойно в папке найдено было, то что подходило под шаблон.

Данная утилита пробежалась по всем папкам и файлам в них и нашла подходящее под шаблон слово. Т.е. если нам необходимо провести поиск по всем файлам и папкам, то необходимо использовать утилиту rgrep .

КОМАНДА SED

man sed - стрим редактор. Т.е потоковый редактор для фильтрации и редактирования потока данных.

-8

Например, sed -e ‘s/oo/aa’ file.txt - открыть редактор sed и заменить вывод всех oo на aa в файле file.txt. Нужно понимать, что в результате данной команды изменения в файле не произойдут. Просто данные из файла будут взяты и с изменениями выведены на стандартный вывод, т.е. экран. Для сохранения результатов мы можем сказать, чтобы вывел в новый файл указав направление вывода.

sed - e ‘ s / oo / aa ’ file . txt newfile . txt

-9

В данном редакторе мы можем ему сказать использовать регулярные выражения, для этого необходимо добавить ключ -r . У данного редактора очень большой функционал.