| Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
 | 
                    Предыдущая версия
 | 
                
                        
                
                    grep [2013/05/22 12:26] 46.231.215.230                  | 
                
                    grep [2013/05/22 16:29] (текущий)                   | 
            
        
 |  | 
| 	 | 	 | 
|   grep шаблон путь_к_файлу |   | 
 |   | 
| Эта команда выполнит поиск по шаблону в указанном файле и выведет в стандартный поток вывода строки файла, искомый шаблон содержащие. | Эта команда выполнит поиск по шаблону в указанном файле и выведет в стандартный поток вывода строки файла, искомый шаблон содержащие. | 
 |  | 
|   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" |   | 
 |  | 
| 	 | 	 | 
| Выполняя поиск в файлах, grep умеет работать рекурсивно. Чтобы заставить grep работать таким образом, используйте опцию «-r». А по умолчанию grep будет искать только в файлах, находящихся в текущем каталоге. Таким образом, если вы запустите что-то вроде | Выполняя поиск в файлах, grep умеет работать рекурсивно. Чтобы заставить grep работать таким образом, используйте опцию «-r». А по умолчанию grep будет искать только в файлах, находящихся в текущем каталоге. Таким образом, если вы запустите что-то вроде | 
 |  | 
|   grep шаблон * |   | 
 |  | 
| 	 | 	 | 
| Но если вы запустите | Но если вы запустите | 
 |  | 
|   grep -r шаблон * |    | 
|   |   | 
| 	 | 	 | 
 |  | 
| Само собой, вы можете комбинировать опции. Например, чтобы найти файлы, не содержащие строк, соответствующих шаблону можно использовать | Само собой, вы можете комбинировать опции. Например, чтобы найти файлы, не содержащие строк, соответствующих шаблону можно использовать | 
 |   | 
|   grep -v -l pattern * |   | 
 |  | 
| 	 | 	 | 
| Используя эти опции, необходимо указать саму опцию и целое число, определяющее количество строк для вывода. Например | Используя эти опции, необходимо указать саму опцию и целое число, определяющее количество строк для вывода. Например | 
 |  | 
|   grep -C 2 pattern files |   | 
 |  | 
| 	 | 	 | 
| Регулярные выражения | Регулярные выражения | 
 |  | 
|   grep может оказаться совершенно неиспользуемой в повседневной жизни, если вы собираетесь при помощи неё искать лишь какие-то конкретные последовательности символов.  А как быть с тем, если вам нужно найти, например, только цифры или последовательность символов, в которую могут входить лишь определённые символы или их группы? Не проблема! Используя регулярные выражения в grep, вы получаете инструмент для решения чуть ли не любой задачи поиска. | grep может оказаться совершенно неиспользуемой в повседневной жизни, если вы собираетесь при помощи неё искать лишь какие-то конкретные последовательности символов.  А как быть с тем, если вам нужно найти, например, только цифры или последовательность символов, в которую могут входить лишь определённые символы или их группы? Не проблема! Используя регулярные выражения в grep, вы получаете инструмент для решения чуть ли не любой задачи поиска. | 
 |  | 
| Давайте немного рассмотрим регулярные выражения, которые, вероятно, вам пригодятся. В командной оболочке символ звёздочки «*» соответствует любому символу ноль или более раз. В grep символ «*» имеет несколько иное значение. В grep этот символ необходимо группировать с другими. Например, если вам нужен тот же эффект, как и в оболочке, используйте следующее: | Давайте немного рассмотрим регулярные выражения, которые, вероятно, вам пригодятся. В командной оболочке символ звёздочки «*» соответствует любому символу ноль или более раз. В grep символ «*» имеет несколько иное значение. В grep этот символ необходимо группировать с другими. Например, если вам нужен тот же эффект, как и в оболочке, используйте следующее: | 
 |  | 
|   grep '.*' pattern files |   | 
 |  | 
| 	 | 	 | 
 |  | 
| 	 | 	 | 
|   ls | grep '.*html$' |  | 
 |  | 
| Если вам необходимо, чтобы grep интерпретировала спецсивмолы как обычные — предварите их обратным слешем. Например | Если вам необходимо, чтобы grep интерпретировала спецсивмолы как обычные — предварите их обратным слешем. Например | 
 |   | 
|   grep '\*' filename |   | 
 |  | 
| 	 | 	 | 
| В выражениях можно использовать диапазоны и классы символов. Для этого при составлении шаблона в grep используются квадратные скобки. Например, символу в диапазоне от A до Z будет соответствовать шаблон [A-Z]"", а любой цифре — [0-9]"". Также, используя квадратные скобки вы можете определять соответствие классам символов. Например, [:punct:]"" будет соответствовать любому знаку препинания. Например, чтобы найти строки, содержащие знаки препинания в конце, можно использовать следующую команду: | В выражениях можно использовать диапазоны и классы символов. Для этого при составлении шаблона в grep используются квадратные скобки. Например, символу в диапазоне от A до Z будет соответствовать шаблон [A-Z]"", а любой цифре — [0-9]"". Также, используя квадратные скобки вы можете определять соответствие классам символов. Например, [:punct:]"" будет соответствовать любому знаку препинания. Например, чтобы найти строки, содержащие знаки препинания в конце, можно использовать следующую команду: | 
 |  | 
|   grep '[[:punct:]]$' files |   | 
 |  | 
| 	 | 	 |