7 linux grep or, grep and, grep not operator examples

Популярные теги

ubuntu
linux
ubuntu_18_04
settings
debian
setup
ubuntu_16_04
error
macos
redhat
problems
mint
windows
install
server
ubuntu_18_10
desktop
update
android
bash
wifi
hardware
убунту
files
rhel
network
web
docker
kali
security
windows_10
nvidia
ustanovka
apt
filesystem
python
software
stretch
issues
kde
password
apache2
manjaro
mysql
wine
program
video_card
for
disk
shell
apt-get
drivers
partition
performance
vpn
gnome
keyboard
terminal
kubuntu
usb
ubuntu_20_04
package-management
video
driver
games
wi_fi
nginx
best
installation
sound
delete
user
macbook
disk_space
freebsd
dual_boot
virtualbox
ubuntu_17_10
cron
fedora
lubuntu
oshibka
chrome
boot
scripting
ssh
mail
os
centos
zorin_os
command-line
firewall
git
tools
zorin
bluetooth
hotkeys
kvm
kernel
display

Примеры использования регулярных выражений

Теперь, когда мы рассмотрели основы и вы знаете как все работает, осталось закрепить полученные знания про регулярные выражения linux grep на практике. Два очень полезные спецсимвола — это ^ и $, которые обозначают начало и конец строки. Например, мы хотим получить всех пользователей, зарегистрированных в нашей системе, имя которых начинается на s. Тогда можно применить регулярное выражение «^s». Вы можете использовать команду egrep:

Если мы хотим отбирать строки по последнему символу в строке, что для этого можно использовать $. Например, выберем всех системных пользователей, без оболочки, записи о таких пользователях заканчиваются на false:

Чтобы вывести имена пользователей, которые начинаются на s или d используйте такое выражение:

Такой же результат можно получить, использовав символ «|». Первый вариант более пригоден для диапазонов, а второй чаще применяется для обычных или/или:

Теперь давайте выберем всех пользователей, длина имени которых составляет не три символа. Имя пользователя завершается двоеточием. Мы можем сказать, что оно может содержать любой буквенный символ, который должен быть повторен три раза, перед двоеточием:

Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Основные команды Sed

Для того чтобы применить SED достаточно ввести в командную строку

echo ice | sed s/ice/fire/

Результат:

fire

Замена слова в файле

Обычно SED применяют к файлам, например к логам или конфигам.

Предположим, что у нас есть файл input.txt следующего содержания

Мы хотим заменить слово Here на There

sed ‘s/HereThere/’ input.txt

Результат будет выведен в консоль:

There is a String
There is an Integer
There is a Float

Если нужно не вывести в консоль а изменить содержание файла — используем опцию -i

sed -i ‘s/HereThere/’ input.txt

В этом случае перепишется исходный файл input.txt

Рассмотрим пример посложнее. Файл input.txt теперь выглядит так:

sed ‘s/HereThere/’ input.txt

Как Вы сейчас увидите, замена произойдёт только по одному разу в строке

There is an Apple. Here is a Pen. Here is an ApplePen
Integer is There
There is a Float
There is a Pen. Here is a Pineapple. Here is a PineapplePen

Чтобы заменить все слова нужна опция g

sed ‘s/HereThere/g’ input.txt

There is an Apple. There is a Pen. There is an ApplePen
Integer is There
There is a Float
There is a Pen. There is a Pineapple. There is a PineapplePen

Замена слова в файле и вывод результата в другой файл

Та же замена, но с выводом в новый текстовый файл, который мы назовём output:

sed ‘s/HereThere/’ input.txt > output.txt

Замена слова в нескольких файлах одновременно

Если нужно обработать сразу несколько файлов: например файл 1.txt с содержанием

И файл 2.txt с содержанием

Это можно сделать используя *.txt

sed ‘s/HereThere/’ *.txt > output.txt

На выходе файл output.txt будет выглядеть так

Отбросить всё, что левее определённого слова

Предположим, что у нас есть файл input.txt следующего содержания

Мы хотим отбросить всё, что находится левее слова it, включая слово it, и записать в файл.

sed ‘s/^.*it//’ input.txt > output.txt

^ означает, что мы стартуем с начала строки
Результат:

 has a Name
 has a Name
 has a Name

Для доступности объясню синтаксис сравнив две команды. Посмотрите внимательно, когда мы заменяем
слово Here на There.

There находится между двумя слэшами. Раскрашу их для наглядности в зелёный и
красный.

sed ‘s/HereThere

А когда мы хотим удалить что-то, мы сначала описываем, что мы хотим удалить. Например, всё от
начала строки до слова it.

Теперь в правой части условия, где раньше была величина на замену, мы
ничего не пишем, т.е. заменяем на пустое место. Надеюсь, логика понятна.

sed ‘s/^.*it’ > output.txt

Отбросить всё, что правее определённого слова

Предположим, что у нас есть файл input.txt следующего содержания

Мы хотим отбросить всё, что находится правее слова is, включая слово is, и записать в файл.

sed ‘s/is.*//’ > output.txt

Результат:

Экранирование символов в sed

Специальные символы экранируются с помощью \

Предположим, что у нас есть файл input.txt следующего содержания

Мы хотим отбросить всё, что находится левее /a, включая /a, и записать в файл.

sed ‘s/^.*/a//’ > output.txt

В результате получим ошибку

-e expression #1, char 15: unknown option to `s’

Чтобы команда заработала нужно добавить \ перед /

sed ‘s/^.*\/a//’ > output.txt

Результат:

Два условия одновременно в Sed

Предположим, что у нас есть файл input.txt следующего содержания

Мы хотим отбросить всё, что находится левее /b, включая /b, и всё, что правее
has.

Таким образом, в каждой строчке должно остаться только слово it.

Нужно учесть необходимость экранирования специального символа / а также мы хотим
направить вывод в файл.

sed ‘s/^.*\/b//
;
s/has.*//’ input.txt > output.txt

Результат:

Допустим Вы хотите удалить все строки после третьей

sed 3q input.txt > output.txt

Удалить строку

Допустим Вы хотите удалить все строки где встречается слово Apple в файле input.txt

Сделать это можно с помощью опции d

sed ‘/Apple/d‘ input.txt > output.txt

Результат:

Теперь сделаем более сложное условие — удалим все строки где есть слово Pineapple и слово Integer

sed ‘/Pineapple\|Integer/d’ input.txt > output.txt

| выступает в роли логического ИЛИ
\ нужна чтобы экранировать |

Результат:

Получить диапазон строк

В случае, когда Вы работаете с большими файлами, например с логами, часто бывает нужно
получить только определённые строки, например, в момент появления бага.

Копировать из UI командной строки не всегда удобно, но если Вы примерно представляете
диапазон нужных строк — можно скопировать только их и записать в отдельный файл.

Например, Вам нужны строки с 9570 по 9721

sed -n ‘9570,9721p;9722q’ project-2019-10-03.log > bugFound.txt

Использование регулярных выражений

Истинная сила grep заключается в возможности применения для поиска соответствий регулярным выражениям. В регулярных выражениях в аргументе ШАБЛОН используются специальные символы для охвата более широкого диапазона строк. Рассмотрим простой пример.

Допустим, требуется найти  каждое появление фразы, похожей на «our products», которая всегда должна начинаться с «our» и заканчиваться на «products». Для этого нужно указать такой шаблон: «our.*products».

В регулярных выражениях точка («.») интерпретируется как маска для одного символа. Она означает «подойдет любой символ на этом месте». Звездочка («*») означает «подойдет предыдущий символ в количестве от нуля и более». Таким образом, комбинация «.*» означает, что подойдет любой символ в любом количестве. Например, «our amazing products», «ours, the best-ever products» и даже «ourproducts» будут соответствовать выражению. А так как указана опция –i, ему будут соответствовать также «OUR PRODUCTS» и «OuRpRoDuCtS». При запуске команды с этим регулярным выражением мы получим дополнительные совпадения:

$ grep –-color –n -i «our.*products» *.html
product-details.html:27:<p><b>OUR PRODUCTS</b></p>
product-details.html:59:<p class=”products-searchbox”>To search a comprehensive list of our products type your search term in the box below and click the magnifying glass</p>
product-replacement.html:58:<p>If you experience dissatisfaction with any of our fine products, do not hesitate to contact us using the form below.</p>
$

Была найдена фраза «our fine products».

Grep – мощный инструмент работы с текстовыми файлами. При умелом использовании регулярных выражений он предоставляет еще более широкие возможности. Здесь рассмотрены наиболее типичные примеры использования команды. Другие опции командной строки можно узнать, запустив команду с опцией —help.

Применение grep в Linux

Одна из более полезных и многофункциональных команд в терминале Linux – бригада «grep». Grep – это акроним, какой расшифровывается как «global regular expression print» (то имеется, «искать везде соответствующие постоянному выражению строки и выводить их»).

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

Назначение grep — поиск строк согласно условию, изображенному регулярным выражением. Существуют изменения классического grep — egrep, fgrep, rgrep. Все они отточены под конкретные цели, при этом способности grep перекрывают весь функционал. Самым несложным примером использования команды представляется вывод строки, удовлетворяющей шаблону, из файла. Пример мы хотим найти строку, сохраняющую ‘user’ в файле /etc/mysql/my.cnf. Для этого воспользуемся последующей командой:

Grep сможет просто искать конкретное словечко:

Или строку, но в таком варианте её нужно заключать в кавычки:

В добавление альтернативами программы являются egrep и fgrep, которые являются тем же самым, что и, соответственно, grep -E и grep -F. Варианты egrep и fgrep являются устаревшими, но работают для обратной совместимости. Вместо устаревших вариантов рекомендуется использовать grep -E и grep –F.

Команда grep сопоставляет строки исходных файлов с шаблоном, этим базовым регулярным выражением. Если файлы не указаны, используется стандартный ввод. Как как обычно каждая успешно сопоставленная строка копируется на стандартный вывод; если исходных файлов чуть-чуть, перед найденной строкой выдается имя файла. В качестве шаблонов воспринимаются базовые непрерывные выражения (выражения, имеющие своими значениями цепочки символов, и использующие ограниченный комплекс алфавитно-цифровых и специальных символов).

2. Примеры использования команды Grep

Теперь мы увидим, как использовать команду Grep в Linux.

Как использовать Grep в общем

Чтобы понять, как работает Grep, мы посмотрим в каталоге / etc / passwd все результаты, связанные с нашим пользователем:

 grep solvetic / etc / passwd 

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

 grep -i "resoltic" / etc / passwd 

Grep идеально подходит для поиска определенных терминов в известных файлах, например, мы выполним следующий поиск:

 grep Solvetic Solvetic.txt 

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

 grep Solvetic Solvetic.txt Solvetic1.txt 

Более сокращенный способ сделать это — выполнить следующее:

 grep solvetic *. * 

Как использовать grep для перенаправления результатов в файл в Linux

Это полезно в тех случаях, когда мы должны выполнить административные задачи над файлами позже, поэтому можно перенаправить вывод команды grep в определенный файл, например, мы сделаем следующее:

 grep Solvetic Solvetic.txt> Solvetic2.txt 

Как использовать grep для поиска в каталогах

Благодаря параметру -r мы сможем найти значение в доступных подкаталогах, выполним следующее:

 grep -r Solvetic / домашний / решающий 

Как использовать grep для отображения номера строки

Для задач аудита или расширенной поддержки идеально отображать номер строки, в которой находится указанный шаблон поиска, для этого мы можем использовать параметр -n следующим образом. Там мы находим номер строки, где находится каждое значение.

 grep -n Solvetic Solvetic.txt 

Как использовать grep для выделения результатов

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

 grep -color Solvetic Solvetic.txt 

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

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

 grep ^ Solvetic Solvetic.txt 

Теперь, чтобы отобразить строки, которые заканчиваются, мы будем использовать следующее:

 grep Solvetic $ Solvetic.txt 

Как использовать grep для печати всех строк, не видя совпадающих

Если мы хотим увидеть все строки, кроме тех, где задано желаемое значение, мы должны использовать параметр -v следующим образом:

 grep -v Solvetic Solvetic.txt 

Как использовать grep с другими командами

Grep, как и многие команды Linux, можно использовать одновременно с другими командами для получения более четких результатов, например, если мы хотим развернуть процессы HTTP, мы будем использовать grep рядом с ps следующим образом:

 ps -ef | grep http 

Как использовать grep, чтобы посчитать, сколько слов повторяется в файле

Если мы хотим узнать, сколько раз шаблон повторяется в данном файле, мы будем использовать параметр -c:

 grep -c Solvetic Solvetic.txt 

Как использовать grep для обратного поиска

Хотя это звучит странно, это не что иное, как отображение в результате слов, которые мы не указываем, это достигается с помощью параметра -v:

 grep -v Solvetic Solvetic2.txt 

Как использовать grep для просмотра сведений об оборудовании

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

 cat / proc / cpuinfo | grep -i 'Модель' 

Во всем мире мы узнали, как использовать команду grep для доступа к гораздо более конкретным результатам поиска в Linux.

10. Как работать с файлами с помощью команды Tree в Linux

Просмотр скрытых файлов с деревом

По умолчанию команда Tree не будет отображать скрытые файлы по соображениям безопасности. Если мы хотим отобразить их в результате, можно добавить параметр -a для этой цели:

 дерево -а 

Развертывать каталоги только с Tree

Если вы хотите, чтобы Tree генерировал только записи каталога, можно будет использовать его с помощью параметра -d, например:

 дерево-г 

Посмотреть полный путь к файлам с Tree

Команда Tree дает нам возможность распечатать префикс полного пути к файлам в каталоге с помощью параметра -f:

 дерево -f 

Управляйте измерением результата с помощью дерева

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

 дерево -d -L 2 

Используйте выборочные имена с деревом

С параметром -l можно будет исключить определенные слова из результатов, генерируемых Tree, например, мы можем выполнить следующую строку для генерации результатов, но без термина Android:

 дерево -d -I * Android 

файлов grep и регулярные выражения

Регулярные Regular (выражения Expressions) это система
синтаксического текстовых разбора фрагментов по формализованному
шаблону, основанная на записи системе ОБРАЗЦОВ для поиска. Проще
регулярное, говоря выражение — тот же, уже привычный ОБРАЗЕЦ нам
для поиска, только составленный по правилам определенным. Как
математические формулы составляются помощи при набора операторов
(плюс, минус, корень, степень и прочее), так и регулярные выражения
при конструируются помощи различных операторов (?, *, +, {n} и
прочие).

регулярных Тема выражений настолько обширна, что для требует
своего освещения отдельной статьи; в статье данной мы не будем ее
подробно разбирать. Скажу что, лишь существует несколько версий
синтаксиса выражений регулярных: Базовый (basic) BRE, Расширенный
(ERE) extended и регулярные выражения языка Perl.

—Опция-regexp

Рассматривает ОБРАЗЕЦ как регулярное базовое выражение. Эта
опция используется по Опция.

—extended-regexp

Рассматривает ОБРАЗЕЦ расширенное как регулярное выражение.

—perl-Рассматривает

regexp ОБРАЗЕЦ как регулярное выражение Perl языка.

Опция -F

—fixed-strings

Рассматривает как ОБРАЗЕЦ список «фиксированных выражений»
(fixed термин — strings из области регулярных выражений),
разделенных новой символами строки. Будет искать соответствия
них из любому.

Кроме того, существуют две команды альтернативные EGREP и FGREP.
Обе они опциям соответствуют -E и -F соответственно.

Опции —help и —version (-V) буду, и я не общеизвестны на них
останавливаться.

EXAMPLE top

       The following example outputs the location and contents of any line
       containing “f” and ending in “.c”, within all files in the current
       directory whose names contain “g” and end in “.h”.  The -n option
       outputs line numbers, the -- argument treats expansions of “*g*.h”
       starting with “-” as file names not options, and the empty file
       /dev/null causes file names to be output even if only one file name
       happens to be of the form “*g*.h”.

         $ grep -n -- 'f.*\.c$' *g*.h /dev/null
         argmatch.h:1:/* definitions and prototypes for argmatch.c

       The only line that matches is line 1 of argmatch.h.  Note that the
       regular expression syntax used in the pattern differs from the glob‐
       bing syntax that the shell uses to match file names.

Context line control

-A NUM, —after-context=NUM Print NUM lines of trailing context after matching lines. Places a line containing a group separator () between contiguous groups of matches. With the -o or —only-matching option, this has no effect and a warning is given.
-B NUM, —before-context=NUM Print NUM lines of leading context before matching lines. Places a line containing a group separator () between contiguous groups of matches. With the -o or —only-matching option, this has no effect and a warning is given.
-C NUM, NUM, —context=NUM Print NUM lines of output context. Places a line containing a group separator () between contiguous groups of matches. With the -o or —only-matching option, this has no effect and a warning is given.

Technical description

grep searches the named input FILEs (or standard input if no files are named, or if a single dash (««) is given as the file name) for lines containing a match to the given PATTERN. By default, grep prints the matching lines.

Also, three variant programs egrep, fgrep and rgrep are available:

  • egrep is the same as running grep -E. In this mode, grep evaluates your PATTERN string as an extended regular expression (ERE). Nowadays, ERE does not «extend» very far beyond basic regular expressions, but they can still be very useful. For more information about extended regular expressions, see: , below.
  • fgrep is the same as running grep -F. In this mode, grep evaluates your PATTERN string as a «fixed string» — every character in your string is treated literally. For example, if your string contains an asterisk («*«), grep will try to match it with an actual asterisk rather than interpreting this as a wildcard. If your string contains multiple lines (if it contains newlines), each line will be considered a fixed string, and any of them can trigger a match.
  • rgrep is the same as running grep -r. In this mode, grep performs its search recursively. If it encounters a directory, it traverses into that directory and continue searching. (Symbolic links are ignored; if you want to search directories that are symbolically linked, use the -R option instead).

In older operating systems, egrep, fgrep and rgrep were distinct programs with their own executables. In modern systems, these special command names are shortcuts to grep with the appropriate flags enabled. They are functionally equivalent.

Синтаксис и опции less

Запись команды less в терминале выглядит так:

команда опции файл

Наиболее популярные опции:

  • -a, —search-skip-screen — не осуществлять поиск в тексте, который в данный момент отображен на экране;
  • -bn, —buffers=n — задать размер буфера памяти;
  • -c, —clear-screen — листать текст, полностью стирая содержимое экрана (построчная прокрутка работать не будет);
  • -Dxcolor, —color=xcolor — задать цвет отображаемого текста;
  • -E, —QUIT-AT-EOF — выйти, когда утилита достигнет конца файла;
  • -e, —quit-at-eof — выйти, когда утилита второй раз достигнет конца файла;
  • -F, —quit-if-one-screen — выйти, если содержимое файла помещается на одном экране;
  • -f, —force — открыть специальный файл;
  • -hn, —max-back-scroll=n — задать максимальное количество строк для прокрутки назад;
  • -yn, —max-forw-scroll=n — задать максимальное количество строк для прокрутки вперёд;
  • -i, —ignore-case — игнорировать регистр;
  • -I, —IGNORE-CASE — игнорировать регистр, даже если паттерн для поиска содержит заглавные буквы;
  • -jn, —jump-target=n — указать, в какой строке должна быть выведена искомая информация;
  • -J, —status-column — пометить строки, соответствующие результатам поиска;
  • -n, —line-numbers — не выводить номера строк;
  • -N, —LINE-NUMBERS — вывести номера строк;
  • -s, —squeeze-blank-lines — заменить множество идущих подряд пустых строк одной пустой строкой;
  • -w, —hilite-unread — выделить первую строку нового фрагмента текста.

Во время просмотра текста утилитой можно управлять при помощи внутренних команд, набирая их на клавиатуре компьютера. Наиболее часто используемые из них:

  • h, H — справка;
  • Space, Ctrl+V, f, Ctrl+F — прокрутить текст на один экран вперёд;
  • Enter, Return, Ctrl+N, e, Ctrl+E, j, Ctrl+J — прокрутить текст на n строк вперед, по умолчанию n=1;
  • y, Ctrl+Y, Ctrl+P, k, Ctrl+K — прокрутить текст на n строк назад, по умолчанию n=1;
  • Ctrl+→ — прокрутить текст по горизонтали в конец строки;
  • Ctrl+← — прокрутить текст по горизонтали в начало строки;
  • :d — удалить текущий файл из списка файлов;
  • Ctrl+G, :f — вывести основную информацию о файле;
  • q, Q, :q, :Q, ZZ — выход.

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

Example usage

Let’s say want to quickly locate the phrase «our products» in HTML files on your machine. Let’s start by searching a single file. Here, our PATTERN is «our products» and our FILE is product-listing.html.

A single line was found containing our pattern, and grep outputs the entire matching line to the terminal. The line is longer than our terminal width so the text wraps around to the following lines, but this output corresponds to exactly one line in our FILE.

Note

The PATTERN is interpreted by grep as a regular expression. In the above example, all the characters we used (letters and a space) are interpreted literally in regular expressions, so only the exact phrase will be matched. Other characters have special meanings, however — some punctuation marks, for example. For more information, see: Regular expression quick reference.

If we use the —color option, our successful matches will be highlighted for us:

Viewing line numbers of successful matches

It will be even more useful if we know where the matching line appears in our file. If we specify the -n option, grep will prefix each matching line with the line number:

Our matching line is prefixed with «18:» which tells us this corresponds to line 18 in our file.

Performing case-insensitive grep searches

What if «our products» appears at the beginning of a sentence, or appears in all uppercase? We can specify the -i option to perform a case-insensitive match:

Using the -i option, grep finds a match on line 23 as well.

Searching multiple files using a wildcard

If we have multiple files to search, we can search them all using a wildcard in our FILE name. Instead of specifying product-listing.html, we can use an asterisk («*«) and the .html extension. When the command is executed, the shell expands the asterisk to the name of any file it finds (in the current directory) which ends in «.html«.

Notice that each line starts with the specific file where that match occurs.

Recursively searching subdirectories

We can extend our search to subdirectories and any files they contain using the -r option, which tells grep to perform its search recursively. Let’s change our FILE name to an asterisk («*«), so that it matches any file or directory name, and not only HTML files:

This gives us three additional matches. Notice that the directory name is included for any matching files that are not in the current directory.

Using regular expressions to perform more powerful searches

The true power of grep is that it can match regular expressions. (That’s what the «re» in «grep» stands for). Regular expressions use special characters in the PATTERN string to match a wider array of strings. Let’s look at a simple example.

Let’s say you want to find every occurrence of a phrase similar to «our products» in your HTML files, but the phrase should always start with «our» and end with «products». We can specify this PATTERN instead: «our.*products».

In regular expressions, the period («.«) is interpreted as a single-character wildcard. It means «any character that appears in this place will match.» The asterisk («*«) means «the preceding character, appearing zero or more times, will match.» So the combination «.*» will match any number of any character. For instance, «our amazing products«, «ours, the best-ever products«, and even «ourproducts» will match. And because we’re specifying the -i option, «OUR PRODUCTS» and «OuRpRoDuCtS will match as well. Let’s run the command with this regular expression, and see what additional matches we can get:

Here, we also got a match from the phrase «our fine products«.

Grep is a powerful tool to help you work with text files, and it gets even more powerful when you become comfortable using regular expressions.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector