/[pcre]/code/trunk/doc/pcregrep.txt
ViewVC logotype

Diff of /code/trunk/doc/pcregrep.txt

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 73 by nigel, Sat Feb 24 21:40:30 2007 UTC revision 150 by ph10, Tue Apr 17 08:22:40 2007 UTC
# Line 1  Line 1 
1  PCREGREP(1)                                                        PCREGREP(1)  PCREGREP(1)                                                        PCREGREP(1)
2    
3    
   
4  NAME  NAME
5         pcregrep - a grep with Perl-compatible regular expressions.         pcregrep - a grep with Perl-compatible regular expressions.
6    
7    
8  SYNOPSIS  SYNOPSIS
9         pcregrep [-Vcfhilnrsuvx] [long options] [pattern] [file1 file2 ...]         pcregrep [options] [long options] [pattern] [path1 path2 ...]
10    
11    
12  DESCRIPTION  DESCRIPTION
# Line 14  DESCRIPTION Line 14  DESCRIPTION
14         pcregrep  searches  files  for  character  patterns, in the same way as         pcregrep  searches  files  for  character  patterns, in the same way as
15         other grep commands do, but it uses the PCRE regular expression library         other grep commands do, but it uses the PCRE regular expression library
16         to support patterns that are compatible with the regular expressions of         to support patterns that are compatible with the regular expressions of
17         Perl 5. See pcrepattern for a full description of syntax and  semantics         Perl 5. See pcrepattern(3) for a full description of syntax and  seman-
18         of the regular expressions that PCRE supports.         tics of the regular expressions that PCRE supports.
19    
20           Patterns,  whether  supplied on the command line or in a separate file,
21           are given without delimiters. For example:
22    
23         A pattern must be specified on the command line unless the -f option is           pcregrep Thursday /etc/motd
        used (see below).  
24    
25         If no files are  specified,  pcregrep  reads  the  standard  input.  By         If you attempt to use delimiters (for example, by surrounding a pattern
26         default,  each  line that matches the pattern is copied to the standard         with  slashes,  as  is common in Perl scripts), they are interpreted as
27         output, and if there is more than one file, the file  name  is  printed         part of the pattern. Quotes can of course be used on the  command  line
28         before  each line of output. However, there are options that can change         because they are interpreted by the shell, and indeed they are required
29         how pcregrep behaves.         if a pattern contains white space or shell metacharacters.
30    
31         Lines are limited to BUFSIZ characters. BUFSIZ is defined in <stdio.h>.         The first argument that follows any option settings is treated  as  the
32         The newline character is removed from the end of each line before it is         single  pattern  to be matched when neither -e nor -f is present.  Con-
33         matched against the pattern.         versely, when one or both of these options are  used  to  specify  pat-
34           terns, all arguments are treated as path names. At least one of -e, -f,
35           or an argument pattern must be provided.
36    
37           If no files are specified, pcregrep reads the standard input. The stan-
38           dard  input  can  also  be  referenced by a name consisting of a single
39           hyphen.  For example:
40    
41             pcregrep some-pattern /file1 - /file3
42    
43           By default, each line that matches the pattern is copied to  the  stan-
44           dard  output, and if there is more than one file, the file name is out-
45           put at the start of each line. However,  there  are  options  that  can
46           change how pcregrep behaves. In particular, the -M option makes it pos-
47           sible to search for patterns that span line boundaries. What defines  a
48           line boundary is controlled by the -N (--newline) option.
49    
50           Patterns  are  limited  to  8K  or  BUFSIZ characters, whichever is the
51           greater.  BUFSIZ is defined in <stdio.h>.
52    
53           If the LC_ALL or LC_CTYPE environment variable is  set,  pcregrep  uses
54           the  value to set a locale when calling the PCRE library.  The --locale
55           option can be used to override this.
56    
57    
58  OPTIONS  OPTIONS
59    
60           --        This terminate the list of options. It is useful if the  next
61                     item  on  the command line starts with a hyphen but is not an
62                     option. This allows for the processing of patterns and  file-
63                     names that start with hyphens.
64    
65           -A number, --after-context=number
66                     Output  number  lines of context after each matching line. If
67                     filenames and/or line numbers are being output, a hyphen sep-
68                     arator  is  used  instead of a colon for the context lines. A
69                     line containing "--" is output between each group  of  lines,
70                     unless  they  are  in  fact contiguous in the input file. The
71                     value of number is expected to be relatively small.  However,
72                     pcregrep guarantees to have up to 8K of following text avail-
73                     able for context output.
74    
75           -B number, --before-context=number
76                     Output number lines of context before each matching line.  If
77                     filenames and/or line numbers are being output, a hyphen sep-
78                     arator is used instead of a colon for the  context  lines.  A
79                     line  containing  "--" is output between each group of lines,
80                     unless they are in fact contiguous in  the  input  file.  The
81                     value  of number is expected to be relatively small. However,
82                     pcregrep guarantees to have up to 8K of preceding text avail-
83                     able for context output.
84    
85           -C number, --context=number
86                     Output  number  lines  of  context both before and after each
87                     matching line.  This is equivalent to setting both -A and  -B
88                     to the same value.
89    
90           -c, --count
91                     Do  not  output individual lines; instead just output a count
92                     of the number of lines that would otherwise have been output.
93                     If  several  files  are  given, a count is output for each of
94                     them. In this mode, the -A, -B, and -C options are ignored.
95    
96           --colour, --color
97                     If this option is given without any data, it is equivalent to
98                     "--colour=auto".   If  data  is required, it must be given in
99                     the same shell item, separated by an equals sign.
100    
101           --colour=value, --color=value
102                     This option specifies under what circumstances the part of  a
103                     line that matched a pattern should be coloured in the output.
104                     The value may be "never" (the default), "always", or  "auto".
105                     In  the  latter  case, colouring happens only if the standard
106                     output is connected to a terminal. The colour can  be  speci-
107                     fied  by  setting the environment variable PCREGREP_COLOUR or
108                     PCREGREP_COLOR. The value of this variable should be a string
109                     of  two  numbers,  separated by a semicolon.  They are copied
110                     directly into the control string for setting colour on a ter-
111                     minal,  so it is your responsibility to ensure that they make
112                     sense. If neither of the environment variables  is  set,  the
113                     default is "1;31", which gives red.
114    
115           -D action, --devices=action
116                     If  an  input  path  is  not  a  regular file or a directory,
117                     "action" specifies how it is to be  processed.  Valid  values
118                     are  "read" (the default) or "skip" (silently skip the path).
119    
120           -d action, --directories=action
121                     If an input path is a directory, "action" specifies how it is
122                     to  be  processed.   Valid  values  are "read" (the default),
123                     "recurse" (equivalent to the -r option), or "skip"  (silently
124                     skip  the path). In the default case, directories are read as
125                     if they were ordinary files. In some  operating  systems  the
126                     effect  of reading a directory like this is an immediate end-
127                     of-file.
128    
129           -e pattern, --regex=pattern,
130                     --regexp=pattern Specify a pattern to be matched. This option
131                     can  be  used multiple times in order to specify several pat-
132                     terns. It can also be used as a way of  specifying  a  single
133                     pattern  that starts with a hyphen. When -e is used, no argu-
134                     ment pattern is taken from the command  line;  all  arguments
135                     are treated as file names. There is an overall maximum of 100
136                     patterns. They are applied to each line in the order in which
137                     they  are  defined until one matches (or fails to match if -v
138                     is used). If -f is used with -e, the  command  line  patterns
139                     are  matched  first,  followed by the patterns from the file,
140                     independent of the order in which these  options  are  speci-
141                     fied.  Note that multiple use of -e is not the same as a sin-
142                     gle pattern with alternatives. For  example,  X|Y  finds  the
143                     first  character in a line that is X or Y, whereas if the two
144                     patterns are given separately, pcregrep  finds  X  if  it  is
145                     present, even if it follows Y in the line. It finds Y only if
146                     there is no X in the line. This really matters  only  if  you
147                     are using -o to show the portion of the line that matched.
148    
149           --exclude=pattern
150                     When pcregrep is searching the files in a directory as a con-
151                     sequence of the -r (recursive search) option, any files whose
152                     names  match  the pattern are excluded. The pattern is a PCRE
153                     regular expression. If a file name matches both --include and
154                     --exclude,  it  is  excluded. There is no short form for this
155                     option.
156    
157           -F, --fixed-strings
158                     Interpret each pattern as a list of fixed strings,  separated
159                     by  newlines,  instead  of  as  a  regular expression. The -w
160                     (match as a word) and -x (match whole line)  options  can  be
161                     used with -F. They apply to each of the fixed strings. A line
162                     is selected if any of the fixed strings are found in it (sub-
163                     ject to -w or -x, if present).
164    
165           -f filename, --file=filename
166                     Read  a  number  of patterns from the file, one per line, and
167                     match them against each line of input. A data line is  output
168                     if any of the patterns match it. The filename can be given as
169                     "-" to refer to the standard input. When -f is used, patterns
170                     specified  on  the command line using -e may also be present;
171                     they are tested before the file's patterns. However, no other
172                     pattern  is  taken  from  the command line; all arguments are
173                     treated as file names. There is an  overall  maximum  of  100
174                     patterns. Trailing white space is removed from each line, and
175                     blank lines are ignored. An empty file contains  no  patterns
176                     and therefore matches nothing.
177    
178           -H, --with-filename
179                     Force  the  inclusion  of the filename at the start of output
180                     lines when searching a single file. By default, the  filename
181                     is  not  shown in this case. For matching lines, the filename
182                     is followed by a colon and a  space;  for  context  lines,  a
183                     hyphen separator is used. If a line number is also being out-
184                     put, it follows the file name without a space.
185    
186           -h, --no-filename
187                     Suppress the output filenames when searching multiple  files.
188                     By  default,  filenames  are  shown  when  multiple files are
189                     searched. For matching lines, the filename is followed  by  a
190                     colon  and  a space; for context lines, a hyphen separator is
191                     used. If a line number is also being output, it  follows  the
192                     file name without a space.
193    
194           --help    Output a brief help message and exit.
195    
196           -i, --ignore-case
197                     Ignore upper/lower case distinctions during comparisons.
198    
199           --include=pattern
200                     When pcregrep is searching the files in a directory as a con-
201                     sequence of the -r  (recursive  search)  option,  only  those
202                     files whose names match the pattern are included. The pattern
203                     is a PCRE regular expression. If a  file  name  matches  both
204                     --include  and  --exclude,  it is excluded. There is no short
205                     form for this option.
206    
207           -L, --files-without-match
208                     Instead of outputting lines from the files, just  output  the
209                     names  of  the files that do not contain any lines that would
210                     have been output. Each file name is output once, on  a  sepa-
211                     rate line.
212    
213           -l, --files-with-matches
214                     Instead  of  outputting lines from the files, just output the
215                     names of the files containing lines that would have been out-
216                     put.  Each  file  name  is  output  once, on a separate line.
217                     Searching stops as soon as a matching  line  is  found  in  a
218                     file.
219    
220           --label=name
221                     This option supplies a name to be used for the standard input
222                     when file names are being output. If not supplied, "(standard
223                     input)" is used. There is no short form for this option.
224    
225           --locale=locale-name
226                     This  option specifies a locale to be used for pattern match-
227                     ing. It overrides the value in the LC_ALL or  LC_CTYPE  envi-
228                     ronment  variables.  If  no  locale  is  specified,  the PCRE
229                     library's default (usually the "C" locale) is used. There  is
230                     no short form for this option.
231    
232           -M, --multiline
233                     Allow  patterns to match more than one line. When this option
234                     is given, patterns may usefully contain literal newline char-
235                     acters  and  internal  occurrences of ^ and $ characters. The
236                     output for any one match may consist of more than  one  line.
237                     When  this option is set, the PCRE library is called in "mul-
238                     tiline" mode.  There is a limit to the number of  lines  that
239                     can  be matched, imposed by the way that pcregrep buffers the
240                     input file as it scans it. However, pcregrep ensures that  at
241                     least 8K characters or the rest of the document (whichever is
242                     the shorter) are available for forward  matching,  and  simi-
243                     larly the previous 8K characters (or all the previous charac-
244                     ters, if fewer than 8K) are guaranteed to  be  available  for
245                     lookbehind assertions.
246    
247           -N newline-type, --newline=newline-type
248                     The  PCRE  library  supports  five  different conventions for
249                     indicating the ends of lines. They are  the  single-character
250                     sequences  CR  (carriage  return) and LF (linefeed), the two-
251                     character sequence CRLF, an "anycrlf" convention, which  rec-
252                     ognizes  any  of the preceding three types, and an "any" con-
253                     vention, in which any Unicode line ending sequence is assumed
254                     to  end a line. The Unicode sequences are the three just men-
255                     tioned,  plus  VT  (vertical  tab,  U+000B),  FF   (formfeed,
256                     U+000C),   NEL  (next  line,  U+0085),  LS  (line  separator,
257                     U+2028), and PS (paragraph separator, U+2029).
258    
259                     When  the  PCRE  library  is  built,  a  default  line-ending
260                     sequence   is  specified.   This  is  normally  the  standard
261                     sequence for the operating system. Unless otherwise specified
262                     by  this  option,  pcregrep  uses the library's default.  The
263                     possible values for this option are CR, LF, CRLF, ANYCRLF, or
264                     ANY.  This  makes  it  possible to use pcregrep on files that
265                     have come from other environments without  having  to  modify
266                     their  line  endings.  If the data that is being scanned does
267                     not agree with the convention set by  this  option,  pcregrep
268                     may behave in strange ways.
269    
270           -n, --line-number
271                     Precede each output line by its line number in the file, fol-
272                     lowed by a colon and a space for matching lines or  a  hyphen
273                     and  a space for context lines. If the filename is also being
274                     output, it precedes the line number.
275    
276           -o, --only-matching
277                     Show only the part of the line that  matched  a  pattern.  In
278                     this  mode,  no context is shown. That is, the -A, -B, and -C
279                     options are ignored.
280    
281           -q, --quiet
282                     Work quietly, that is, display nothing except error messages.
283                     The  exit  status  indicates  whether or not any matches were
284                     found.
285    
286           -r, --recursive
287                     If any given path is a directory, recursively scan the  files
288                     it  contains, taking note of any --include and --exclude set-
289                     tings. By default, a directory is read as a normal  file;  in
290                     some  operating  systems this gives an immediate end-of-file.
291                     This option is a shorthand  for  setting  the  -d  option  to
292                     "recurse".
293    
294           -s, --no-messages
295                     Suppress  error  messages  about  non-existent  or unreadable
296                     files. Such files are quietly skipped.  However,  the  return
297                     code is still 2, even if matches were found in other files.
298    
299           -u, --utf-8
300                     Operate  in UTF-8 mode. This option is available only if PCRE
301                     has been compiled with UTF-8 support. Both patterns and  sub-
302                     ject lines must be valid strings of UTF-8 characters.
303    
304           -V, --version
305                     Write  the  version  numbers of pcregrep and the PCRE library
306                     that is being used to the standard error stream.
307    
308           -v, --invert-match
309                     Invert the sense of the match, so that  lines  which  do  not
310                     match any of the patterns are the ones that are found.
311    
312           -w, --word-regex, --word-regexp
313                     Force the patterns to match only whole words. This is equiva-
314                     lent to having \b at the start and end of the pattern.
315    
316           -x, --line-regex, --line-regexp
317                     Force the patterns to be anchored (each must  start  matching
318                     at  the beginning of a line) and in addition, require them to
319                     match entire lines. This is equivalent  to  having  ^  and  $
320                     characters at the start and end of each alternative branch in
321                     every pattern.
322    
        -V        Write the version number of the PCRE library  being  used  to  
                  the standard error stream.  
323    
324         -c        Do  not print individual lines; instead just print a count of  ENVIRONMENT VARIABLES
                  the number of lines that would otherwise have  been  printed.  
                  If  several  files  are given, a count is printed for each of  
                  them.  
   
        -ffilename  
                  Read a number of patterns from the file, one  per  line,  and  
                  match  all of them against each line of input. A line is out-  
                  put if any of the patterns match it.  When  -f  is  used,  no  
                  pattern  is  taken  from  the command line; all arguments are  
                  treated as file names. There is a maximum  of  100  patterns.  
                  Trailing white space is removed, and blank lines are ignored.  
                  An empty file contains  no  patterns  and  therefore  matches  
                  nothing.  
325    
326         -h        Suppress printing of filenames when searching multiple files.         The environment variables LC_ALL and LC_CTYPE  are  examined,  in  that
327           order,  for  a  locale.  The first one that is set is used. This can be
328           overridden by the --locale option.  If  no  locale  is  set,  the  PCRE
329           library's default (usually the "C" locale) is used.
330    
        -i        Ignore upper/lower case distinctions during comparisons.  
331    
332         -l        Instead of printing lines from  the  files,  just  print  the  NEWLINES
                  names  of  the  files  containing  lines that would have been  
                  printed. Each file name is printed once, on a separate  line.  
333    
334         -n        Precede each line by its line number in the file.         The  -N (--newline) option allows pcregrep to scan files with different
335           newline conventions from the default.  However,  the  setting  of  this
336           option  does not affect the way in which pcregrep writes information to
337           the standard error and output streams. It uses the  string  "\n"  in  C
338           printf()  calls  to  indicate newlines, relying on the C I/O library to
339           convert this to an appropriate sequence if the  output  is  sent  to  a
340           file.
341    
        -r        If  any  file  is  a directory, recursively scan the files it  
                  contains. Without -r a directory is scanned as a normal file.  
342    
343         -s        Work  silently,  that  is,  display nothing except error mes-  OPTIONS COMPATIBILITY
                  sages.  The exit status indicates whether  any  matches  were  
                  found.  
344    
345         -u        Operate  in UTF-8 mode. This option is available only if PCRE         The majority of short and long forms of pcregrep's options are the same
346                   has been compiled with UTF-8 support. Both  the  pattern  and         as in the GNU grep program. Any long option of  the  form  --xxx-regexp
347                   each  subject  line  are assumed to be valid strings of UTF-8         (GNU  terminology) is also available as --xxx-regex (PCRE terminology).
348                   characters.         However, the --locale, -M, --multiline, -u,  and  --utf-8  options  are
349           specific to pcregrep.
        -v        Invert the sense of the match, so that  lines  which  do  not  
                  match the pattern are now the ones that are found.  
   
        -x        Force  the  pattern to be anchored (it must start matching at  
                  the beginning of the line) and in  addition,  require  it  to  
                  match  the  entire line. This is equivalent to having ^ and $  
                  characters at the start and end of each alternative branch in  
                  the regular expression.  
350    
351    
352  LONG OPTIONS  OPTIONS WITH DATA
353    
354         Long  forms  of all the options are available, as in GNU grep. They are         There are four different ways in which an option with data can be spec-
355         shown in the following table:         ified.  If a short form option is used, the  data  may  follow  immedi-
356           ately, or in the next command line item. For example:
357    
358           -c   --count           -f/some/file
359           -h   --no-filename           -f /some/file
          -i   --ignore-case  
          -l   --files-with-matches  
          -n   --line-number  
          -r   --recursive  
          -s   --no-messages  
          -u   --utf-8  
          -V   --version  
          -v   --invert-match  
          -x   --line-regex  
          -x   --line-regexp  
360    
361         In addition, --file=filename is equivalent to  -ffilename,  and  --help         If  a long form option is used, the data may appear in the same command
362         shows the list of options and then exits.         line item, separated by an equals character, or (with one exception) it
363           may appear in the next command line item. For example:
364    
365             --file=/some/file
366             --file /some/file
367    
368           Note,  however, that if you want to supply a file name beginning with ~
369           as data in a shell command, and have the  shell  expand  ~  to  a  home
370           directory, you must separate the file name from the option, because the
371           shell does not treat ~ specially unless it is at the start of an  item.
372    
373           The  exception  to  the  above is the --colour (or --color) option, for
374           which the data is optional. If this option does have data, it  must  be
375           given  in  the first form, using an equals character. Otherwise it will
376           be assumed that it has no data.
377    
378    
379    MATCHING ERRORS
380    
381           It is possible to supply a regular expression that takes  a  very  long
382           time  to  fail  to  match certain lines. Such patterns normally involve
383           nested indefinite repeats, for example: (a+)*\d when matched against  a
384           line  of  a's  with  no  final  digit. The PCRE matching function has a
385           resource limit that causes it to abort in these circumstances. If  this
386           happens, pcregrep outputs an error message and the line that caused the
387           problem to the standard error stream. If there are more  than  20  such
388           errors, pcregrep gives up.
389    
390    
391  DIAGNOSTICS  DIAGNOSTICS
392    
393         Exit status is 0 if any matches were found, 1 if no matches were found,         Exit status is 0 if any matches were found, 1 if no matches were found,
394         and 2 for syntax errors or inacessible  files  (even  if  matches  were         and 2 for syntax errors and non-existent or inacessible files (even  if
395         found).         matches  were  found in other files) or too many matching errors. Using
396           the -s option to suppress error messages about inaccessble  files  does
397           not affect the return code.
398    
399    
400    SEE ALSO
401    
402           pcrepattern(3), pcretest(1).
403    
404    
405  AUTHOR  AUTHOR
406    
407         Philip Hazel <ph10@cam.ac.uk>         Philip Hazel
408         University Computing Service         University Computing Service
409         Cambridge CB2 3QG, England.         Cambridge CB2 3QH, England.
410    
411    
412    REVISION
413    
414  Last updated: 03 February 2003         Last updated: 16 April 2007
415  Copyright (c) 1997-2003 University of Cambridge.         Copyright (c) 1997-2007 University of Cambridge.

Legend:
Removed from v.73  
changed lines
  Added in v.150

  ViewVC Help
Powered by ViewVC 1.1.5