Инструменты пользователя

Инструменты сайта


grep

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
grep [2013/05/22 12:23]
46.231.215.230 создано
grep [2013/05/22 16:29] (текущий)
Строка 3: Строка 3:
 В своей основе grep предельно прост. Если вам нужно поискать что-то по шаблону в файле, воспользуйтесь командой: В своей основе grep предельно прост. Если вам нужно поискать что-то по шаблону в файле, воспользуйтесь командой:
  
-grep шаблон путь_к_файлу +  grep шаблон путь_к_файлу 
-1+
   
-grep шаблон путь_к_файлу 
- 
 Эта команда выполнит поиск по шаблону в указанном файле и выведет в стандартный поток вывода строки файла, искомый шаблон содержащие. Эта команда выполнит поиск по шаблону в указанном файле и выведет в стандартный поток вывода строки файла, искомый шаблон содержащие.
  
Строка 14: Строка 12:
 Существует также очень распространённое применение grep — фильтрация потока вывода других программ. Давайте представим, например, что вам нужно получить список всех файлов, которые устанавливаются из пакета в каталог /usr/bin. В Debian-системах попробуйте команду: Существует также очень распространённое применение grep — фильтрация потока вывода других программ. Давайте представим, например, что вам нужно получить список всех файлов, которые устанавливаются из пакета в каталог /usr/bin. В Debian-системах попробуйте команду:
  
-dpkg-query -L packagename | grep "/usr/bin" +  dpkg-query -L packagename | grep "/usr/bin" 
-+
-  +
-dpkg-query -L packagename | grep "/usr/bin"+
  
 Для систем с RPM команда будет выглядеть так: Для систем с RPM команда будет выглядеть так:
  
-rpm -q --filesbypkg packagename | grep "/usr/bin" +
-1+
   
-rpm -q --filesbypkg packagename | grep "/usr/bin"+  rpm -q --filesbypkg packagename | grep "/usr/bin"
  
 Таким образом, вместо вывода полного списка всех файлов пакета, вы получите только те, которые предназначены для установки в каталог /usr/bin. Вы можете пойти дальше, и при помощи следующего перенаправления в grep, сузить результаты фильтрации. Таким образом, вместо вывода полного списка всех файлов пакета, вы получите только те, которые предназначены для установки в каталог /usr/bin. Вы можете пойти дальше, и при помощи следующего перенаправления в grep, сузить результаты фильтрации.
Строка 32: Строка 27:
 Выполняя поиск в файлах, grep умеет работать рекурсивно. Чтобы заставить grep работать таким образом, используйте опцию «-r». А по умолчанию grep будет искать только в файлах, находящихся в текущем каталоге. Таким образом, если вы запустите что-то вроде Выполняя поиск в файлах, grep умеет работать рекурсивно. Чтобы заставить grep работать таким образом, используйте опцию «-r». А по умолчанию grep будет искать только в файлах, находящихся в текущем каталоге. Таким образом, если вы запустите что-то вроде
  
-grep шаблон * +
-1+
   
-grep шаблон *+  grep шаблон *
  
 то grep будет искать только в файлах, находящихся в текущем каталоге, находясь в котором вы запустили команду. то grep будет искать только в файлах, находящихся в текущем каталоге, находясь в котором вы запустили команду.
Строка 41: Строка 35:
 Но если вы запустите Но если вы запустите
  
-grep -r шаблон * +   
-1+ 
   
-grep -r шаблон *+  grep -r шаблон *
  
 то grep заботливо обойдёт все вложенные подкаталоги и поищет шаблон в файлах найденных подкаталогов. то grep заботливо обойдёт все вложенные подкаталоги и поищет шаблон в файлах найденных подкаталогов.
Строка 57: Строка 51:
 Само собой, вы можете комбинировать опции. Например, чтобы найти файлы, не содержащие строк, соответствующих шаблону можно использовать Само собой, вы можете комбинировать опции. Например, чтобы найти файлы, не содержащие строк, соответствующих шаблону можно использовать
  
-grep -v -l pattern * 
-1 
   
-grep -v -l pattern *+  grep -v -l pattern *
  
 Вам не нужны имена файлов в выводе grep, а интересны лишь строки — воспользуйтесь опцией «-h» и grep не будет выводить имена файлов. Вам не нужны имена файлов в выводе grep, а интересны лишь строки — воспользуйтесь опцией «-h» и grep не будет выводить имена файлов.
Строка 71: Строка 63:
 Используя эти опции, необходимо указать саму опцию и целое число, определяющее количество строк для вывода. Например Используя эти опции, необходимо указать саму опцию и целое число, определяющее количество строк для вывода. Например
  
-grep -C 2 pattern files 
-1 
-  
-grep -C 2 pattern files 
  
 +
 +  grep -C 2 pattern files
 + 
 выведет строки, в которых найдено соответствие, плюс 2 строки до 2 после каждой найденной. выведет строки, в которых найдено соответствие, плюс 2 строки до 2 после каждой найденной.
 Регулярные выражения Регулярные выражения
Строка 83: Строка 74:
 Давайте немного рассмотрим регулярные выражения, которые, вероятно, вам пригодятся. В командной оболочке символ звёздочки «*» соответствует любому символу ноль или более раз. В grep символ «*» имеет несколько иное значение. В grep этот символ необходимо группировать с другими. Например, если вам нужен тот же эффект, как и в оболочке, используйте следующее: Давайте немного рассмотрим регулярные выражения, которые, вероятно, вам пригодятся. В командной оболочке символ звёздочки «*» соответствует любому символу ноль или более раз. В grep символ «*» имеет несколько иное значение. В grep этот символ необходимо группировать с другими. Например, если вам нужен тот же эффект, как и в оболочке, используйте следующее:
  
-grep '.*' pattern files +
-1+
   
-grep '.*' pattern files+  grep '.*' pattern files
  
 Если вам необходимо определить какой-то шаблон один и более раз, вы можете использовать конструкцию «+шаблон». Если вам необходимо определить какой-то шаблон один и более раз, вы можете использовать конструкцию «+шаблон».
Строка 92: Строка 82:
 Символ «^» соответствует началу строки, а символ «$» — её концу. Например, вы хотите найти все файлы с расширением «.html», но вам не нужны файлы с расширением «.html.bak»: Символ «^» соответствует началу строки, а символ «$» — её концу. Например, вы хотите найти все файлы с расширением «.html», но вам не нужны файлы с расширением «.html.bak»:
  
-ls | grep '.*html$' +  ls | grep '.*html$' 
-1+
   
-ls | grep '.*html$'+
  
 Если вам необходимо, чтобы grep интерпретировала спецсивмолы как обычные — предварите их обратным слешем. Например Если вам необходимо, чтобы grep интерпретировала спецсивмолы как обычные — предварите их обратным слешем. Например
  
-grep '\*' filename 
-1 
   
-grep '\*' filename+  grep '\*' filename
  
 будет искать строки, содержащие символ звёздочки в filename. будет искать строки, содержащие символ звёздочки в filename.
Строка 108: Строка 96:
 В выражениях можно использовать диапазоны и классы символов. Для этого при составлении шаблона в grep используются квадратные скобки. Например, символу в диапазоне от A до Z будет соответствовать шаблон [A-Z]"", а любой цифре — [0-9]"". Также, используя квадратные скобки вы можете определять соответствие классам символов. Например, [:punct:]"" будет соответствовать любому знаку препинания. Например, чтобы найти строки, содержащие знаки препинания в конце, можно использовать следующую команду: В выражениях можно использовать диапазоны и классы символов. Для этого при составлении шаблона в grep используются квадратные скобки. Например, символу в диапазоне от A до Z будет соответствовать шаблон [A-Z]"", а любой цифре — [0-9]"". Также, используя квадратные скобки вы можете определять соответствие классам символов. Например, [:punct:]"" будет соответствовать любому знаку препинания. Например, чтобы найти строки, содержащие знаки препинания в конце, можно использовать следующую команду:
  
-grep '[[:punct:]]$' files +
-1+
   
-grep '[[:punct:]]$' files+  grep '[[:punct:]]$' files
  
 Обратите внимание на двойные скобки. Вообще, об использовании регулярных выражений в grep лучше всего проконсультируйтесь с её man-страницей. Поначалу, понимание того, что написано там, может даваться вам с некоторым трудом, однако не поленитесь, и вы сможете овладеть мощным инструментом — регулярными выражениями. Обратите внимание на двойные скобки. Вообще, об использовании регулярных выражений в grep лучше всего проконсультируйтесь с её man-страницей. Поначалу, понимание того, что написано там, может даваться вам с некоторым трудом, однако не поленитесь, и вы сможете овладеть мощным инструментом — регулярными выражениями.
grep.1369225429.txt.gz · Последнее изменение: 2013/05/22 16:23 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux