MyTetra Share
Делитесь знаниями!
Время создания: 04.01.2019 20:47
Автор: alensav
Текстовые метки: grep, поиск
Раздел: MyTetra - Ubuntu_Command
Запись: alensav/MyTetra2/main/base/15466240585pnd5qzrbr/text.html на raw.githubusercontent.com

Поиск текста в документах или grep в помощь

Стандартный



Если вы успели заметить, то я сменил дизайн сайта. Именно во время работы над изменением внешнего вида шаблона и возникла мысль написать эту статью. Я не являюсь большим знатоком в плане web-дизайна, поэтому знаю языки PHP, HTML поверхностно. А проблема заключалась в следующем, мне нужно было найти название одного графического файла, имя которого упоминалось в .php файлах темы WordPress. На помощь пришла программа grep.

Для справки — команда grep служит для поиска и фильтрации строк, которые содержат образец заданный пользователем.

Итак продолжу. Для поиска нужной части текста нужно выполнить в Терминале следующую команду:

grep -rl ‘искомая фраза’ /адрес каталога для поиска/

в итоге у меня получилась вот такая команда:

sudo grep -rl 'icy-logo' /var/www/wordpress/wp-content/themes/icy/

Sudo я добавил, потому что искать пришлось во владениях суперпользователя, ну а поиск по Домашней папке можно без sudo. Нужный файл нашелся буквально за доли секунды. А если использовать такую команду:

sudo grep -r 'icy-logo' /var/www/wordpress/wp-content/themes/icy/ --color

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




Давайте рассмотрим еще несколько примеров использования grep.
Напомню еще раз, главная область использования программы grep – поиск слов либо фраз в файлах, а также потоках вывода. Например, чтобы найти слово
“height” в файле functions.php нужно использовать следующую команду:

grep height functions.php

Естественно, что вы должны открыть Терминал в той папке, в которой находится документ functions.php, если иначе, тогда нужно указать полный путь к файлу. В итоге grep покажет все вхождения слова height, которые он найдет в содержимом functions.php. Нужно знать, что в данном случае grep будет искать именно набор символов, а не слово. Поэтому будут показаны все строки, которые включают слово “height” и другие слова, в которых встречается последовательность “height” В моем случае программа вывела строку ‘flex-height’ => true,.

Чтобы указать grep, что нужно найти именно слово, нужно использовать ключ -w. Он ограничит область поиска только нужным словом. Будем искать слово primary в файле functions.php. Команда будет такой:

grep -w primary functions.php

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

grep -rnw call_name /home/dm/doc/office/

Если вам нужно скрыть имена файлов, тогда воспользуйтесь ключом -h, и наоборот, если нужно вывести только имена файлов, в которых есть искомый текст, то нужно использовать ключ -l. Если использовать ключ -i, то команда будет игнорировать регистр символов из чего следует, что поиск будет производиться среди заглавных и строчных букв.

Для полной информации, про все ключи grep, выполните в Терминале:

man grep

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования