chiark / gitweb /
tidy up conflict
[pcre3.git] / doc / pcregrep.1
1 .TH PCREGREP 1 "03 April 2014" "PCRE 8.35"
3 pcregrep - a grep with Perl-compatible regular expressions.
5 .B pcregrep [options] [long options] [pattern] [path1 path2 ...]
6 .B zpcregrep [options] [long options] [pattern] [file1 file2 ...]
7 .
9 .rs
10 .sp
11 \fBpcregrep\fP searches files for character patterns, in the same way as other
12 grep commands do, but it uses the PCRE regular expression library to support
13 patterns that are compatible with the regular expressions of Perl 5. See
14 .\" HREF
15 \fBpcresyntax\fP(3)
16 .\"
17 for a quick-reference summary of pattern syntax, or
18 .\" HREF
19 \fBpcrepattern\fP(3)
20 .\"
21 for a full description of the syntax and semantics of the regular expressions
22 that PCRE supports.
23 .P
24 Patterns, whether supplied on the command line or in a separate file, are given
25 without delimiters. For example:
26 .sp
27   pcregrep Thursday /etc/motd
28 .sp
29 If you attempt to use delimiters (for example, by surrounding a pattern with
30 slashes, as is common in Perl scripts), they are interpreted as part of the
31 pattern. Quotes can of course be used to delimit patterns on the command line
32 because they are interpreted by the shell, and indeed quotes are required if a
33 pattern contains white space or shell metacharacters.
34 .P
35 The first argument that follows any option settings is treated as the single
36 pattern to be matched when neither \fB-e\fP nor \fB-f\fP is present.
37 Conversely, when one or both of these options are used to specify patterns, all
38 arguments are treated as path names. At least one of \fB-e\fP, \fB-f\fP, or an
39 argument pattern must be provided.
40 .P
41 If no files are specified, \fBpcregrep\fP reads the standard input. The
42 standard input can also be referenced by a name consisting of a single hyphen.
43 For example:
44 .sp
45   pcregrep some-pattern /file1 - /file3
46 .sp
47 By default, each line that matches a pattern is copied to the standard
48 output, and if there is more than one file, the file name is output at the
49 start of each line, followed by a colon. However, there are options that can
50 change how \fBpcregrep\fP behaves. In particular, the \fB-M\fP option makes it
51 possible to search for patterns that span line boundaries. What defines a line
52 boundary is controlled by the \fB-N\fP (\fB--newline\fP) option.
53 .P
54 The amount of memory used for buffering files that are being scanned is
55 controlled by a parameter that can be set by the \fB--buffer-size\fP option.
56 The default value for this parameter is specified when \fBpcregrep\fP is built,
57 with the default default being 20K. A block of memory three times this size is
58 used (to allow for buffering "before" and "after" lines). An error occurs if a
59 line overflows the buffer.
60 .P
61 Patterns can be no longer than 8K or BUFSIZ bytes, whichever is the greater.
62 BUFSIZ is defined in \fB<stdio.h>\fP. When there is more than one pattern
63 (specified by the use of \fB-e\fP and/or \fB-f\fP), each pattern is applied to
64 each line in the order in which they are defined, except that all the \fB-e\fP
65 patterns are tried before the \fB-f\fP patterns.
66 .P
67 By default, as soon as one pattern matches a line, no further patterns are
68 considered. However, if \fB--colour\fP (or \fB--color\fP) is used to colour the
69 matching substrings, or if \fB--only-matching\fP, \fB--file-offsets\fP, or
70 \fB--line-offsets\fP is used to output only the part of the line that matched
71 (either shown literally, or as an offset), scanning resumes immediately
72 following the match, so that further matches on the same line can be found. If
73 there are multiple patterns, they are all tried on the remainder of the line,
74 but patterns that follow the one that matched are not tried on the earlier part
75 of the line.
76 .P
77 This behaviour means that the order in which multiple patterns are specified
78 can affect the output when one of the above options is used. This is no longer
79 the same behaviour as GNU grep, which now manages to display earlier matches
80 for later patterns (as long as there is no overlap).
81 .P
82 Patterns that can match an empty string are accepted, but empty string
83 matches are never recognized. An example is the pattern "(super)?(man)?", in
84 which all components are optional. This pattern finds all occurrences of both
85 "super" and "man"; the output differs from matching with "super|man" when only
86 the matching substrings are being shown.
87 .P
88 If the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variable is set,
89 \fBpcregrep\fP uses the value to set a locale when calling the PCRE library.
90 The \fB--locale\fP option can be used to override this.
91 .P
92 \fBzpcregrep\fR is a wrapper script that allows pcregrep to work on
93 gzip compressed files.
94 .
95 .
97 .rs
98 .sp
99 It is possible to compile \fBpcregrep\fP so that it uses \fBlibz\fP or
100 \fBlibbz2\fP to read files whose names end in \fB.gz\fP or \fB.bz2\fP,
101 respectively. You can find out whether your binary has support for one or both
102 of these file types by running it with the \fB--help\fP option. If the
103 appropriate support is not present, files are treated as plain text. The
104 standard input is always so treated.
105 .
106 .
108 .rs
109 .sp
110 By default, a file that contains a binary zero byte within the first 1024 bytes
111 is identified as a binary file, and is processed specially. (GNU grep also
112 identifies binary files in this manner.) See the \fB--binary-files\fP option
113 for a means of changing the way binary files are handled.
114 .
115 .
117 .rs
118 .sp
119 The order in which some of the options appear can affect the output. For
120 example, both the \fB-h\fP and \fB-l\fP options affect the printing of file
121 names. Whichever comes later in the command line will be the one that takes
122 effect. Similarly, except where noted below, if an option is given twice, the
123 later setting is used. Numerical values for options may be followed by K or M,
124 to signify multiplication by 1024 or 1024*1024 respectively.
125 .TP 10
126 \fB--\fP
127 This terminates the list of options. It is useful if the next item on the
128 command line starts with a hyphen but is not an option. This allows for the
129 processing of patterns and filenames that start with hyphens.
130 .TP
131 \fB-A\fP \fInumber\fP, \fB--after-context=\fP\fInumber\fP
132 Output \fInumber\fP lines of context after each matching line. If filenames
133 and/or line numbers are being output, a hyphen separator is used instead of a
134 colon for the context lines. A line containing "--" is output between each
135 group of lines, unless they are in fact contiguous in the input file. The value
136 of \fInumber\fP is expected to be relatively small. However, \fBpcregrep\fP
137 guarantees to have up to 8K of following text available for context output.
138 .TP
139 \fB-a\fP, \fB--text\fP
140 Treat binary files as text. This is equivalent to
141 \fB--binary-files\fP=\fItext\fP.
142 .TP
143 \fB-B\fP \fInumber\fP, \fB--before-context=\fP\fInumber\fP
144 Output \fInumber\fP lines of context before each matching line. If filenames
145 and/or line numbers are being output, a hyphen separator is used instead of a
146 colon for the context lines. A line containing "--" is output between each
147 group of lines, unless they are in fact contiguous in the input file. The value
148 of \fInumber\fP is expected to be relatively small. However, \fBpcregrep\fP
149 guarantees to have up to 8K of preceding text available for context output.
150 .TP
151 \fB--binary-files=\fP\fIword\fP
152 Specify how binary files are to be processed. If the word is "binary" (the
153 default), pattern matching is performed on binary files, but the only output is
154 "Binary file <name> matches" when a match succeeds. If the word is "text",
155 which is equivalent to the \fB-a\fP or \fB--text\fP option, binary files are
156 processed in the same way as any other file. In this case, when a match
157 succeeds, the output may be binary garbage, which can have nasty effects if
158 sent to a terminal. If the word is "without-match", which is equivalent to the
159 \fB-I\fP option, binary files are not processed at all; they are assumed not to
160 be of interest.
161 .TP
162 \fB--buffer-size=\fP\fInumber\fP
163 Set the parameter that controls how much memory is used for buffering files
164 that are being scanned.
165 .TP
166 \fB-C\fP \fInumber\fP, \fB--context=\fP\fInumber\fP
167 Output \fInumber\fP lines of context both before and after each matching line.
168 This is equivalent to setting both \fB-A\fP and \fB-B\fP to the same value.
169 .TP
170 \fB-c\fP, \fB--count\fP
171 Do not output individual lines from the files that are being scanned; instead
172 output the number of lines that would otherwise have been shown. If no lines
173 are selected, the number zero is output. If several files are are being
174 scanned, a count is output for each of them. However, if the
175 \fB--files-with-matches\fP option is also used, only those files whose counts
176 are greater than zero are listed. When \fB-c\fP is used, the \fB-A\fP,
177 \fB-B\fP, and \fB-C\fP options are ignored.
178 .TP
179 \fB--colour\fP, \fB--color\fP
180 If this option is given without any data, it is equivalent to "--colour=auto".
181 If data is required, it must be given in the same shell item, separated by an
182 equals sign.
183 .TP
184 \fB--colour=\fP\fIvalue\fP, \fB--color=\fP\fIvalue\fP
185 This option specifies under what circumstances the parts of a line that matched
186 a pattern should be coloured in the output. By default, the output is not
187 coloured. The value (which is optional, see above) may be "never", "always", or
188 "auto". In the latter case, colouring happens only if the standard output is
189 connected to a terminal. More resources are used when colouring is enabled,
190 because \fBpcregrep\fP has to search for all possible matches in a line, not
191 just one, in order to colour them all.
192 .sp
193 The colour that is used can be specified by setting the environment variable
194 PCREGREP_COLOUR or PCREGREP_COLOR. The value of this variable should be a
195 string of two numbers, separated by a semicolon. They are copied directly into
196 the control string for setting colour on a terminal, so it is your
197 responsibility to ensure that they make sense. If neither of the environment
198 variables is set, the default is "1;31", which gives red.
199 .TP
200 \fB-D\fP \fIaction\fP, \fB--devices=\fP\fIaction\fP
201 If an input path is not a regular file or a directory, "action" specifies how
202 it is to be processed. Valid values are "read" (the default) or "skip"
203 (silently skip the path).
204 .TP
205 \fB-d\fP \fIaction\fP, \fB--directories=\fP\fIaction\fP
206 If an input path is a directory, "action" specifies how it is to be processed.
207 Valid values are "read" (the default in non-Windows environments, for
208 compatibility with GNU grep), "recurse" (equivalent to the \fB-r\fP option), or
209 "skip" (silently skip the path, the default in Windows environments). In the
210 "read" case, directories are read as if they were ordinary files. In some
211 operating systems the effect of reading a directory like this is an immediate
212 end-of-file; in others it may provoke an error.
213 .TP
214 \fB-e\fP \fIpattern\fP, \fB--regex=\fP\fIpattern\fP, \fB--regexp=\fP\fIpattern\fP
215 Specify a pattern to be matched. This option can be used multiple times in
216 order to specify several patterns. It can also be used as a way of specifying a
217 single pattern that starts with a hyphen. When \fB-e\fP is used, no argument
218 pattern is taken from the command line; all arguments are treated as file
219 names. There is no limit to the number of patterns. They are applied to each
220 line in the order in which they are defined until one matches.
221 .sp
222 If \fB-f\fP is used with \fB-e\fP, the command line patterns are matched first,
223 followed by the patterns from the file(s), independent of the order in which
224 these options are specified. Note that multiple use of \fB-e\fP is not the same
225 as a single pattern with alternatives. For example, X|Y finds the first
226 character in a line that is X or Y, whereas if the two patterns are given
227 separately, with X first, \fBpcregrep\fP finds X if it is present, even if it
228 follows Y in the line. It finds Y only if there is no X in the line. This
229 matters only if you are using \fB-o\fP or \fB--colo(u)r\fP to show the part(s)
230 of the line that matched.
231 .TP
232 \fB--exclude\fP=\fIpattern\fP
233 Files (but not directories) whose names match the pattern are skipped without
234 being processed. This applies to all files, whether listed on the command line,
235 obtained from \fB--file-list\fP, or by scanning a directory. The pattern is a
236 PCRE regular expression, and is matched against the final component of the file
237 name, not the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not
238 apply to this pattern. The option may be given any number of times in order to
239 specify multiple patterns. If a file name matches both an \fB--include\fP
240 and an \fB--exclude\fP pattern, it is excluded. There is no short form for this
241 option.
242 .TP
243 \fB--exclude-from=\fP\fIfilename\fP
244 Treat each non-empty line of the file as the data for an \fB--exclude\fP
245 option. What constitutes a newline when reading the file is the operating
246 system's default. The \fB--newline\fP option has no effect on this option. This
247 option may be given more than once in order to specify a number of files to
248 read.
249 .TP
250 \fB--exclude-dir\fP=\fIpattern\fP
251 Directories whose names match the pattern are skipped without being processed,
252 whatever the setting of the \fB--recursive\fP option. This applies to all
253 directories, whether listed on the command line, obtained from
254 \fB--file-list\fP, or by scanning a parent directory. The pattern is a PCRE
255 regular expression, and is matched against the final component of the directory
256 name, not the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not
257 apply to this pattern. The option may be given any number of times in order to
258 specify more than one pattern. If a directory matches both \fB--include-dir\fP
259 and \fB--exclude-dir\fP, it is excluded. There is no short form for this
260 option.
261 .TP
262 \fB-F\fP, \fB--fixed-strings\fP
263 Interpret each data-matching pattern as a list of fixed strings, separated by
264 newlines, instead of as a regular expression. What constitutes a newline for
265 this purpose is controlled by the \fB--newline\fP option. The \fB-w\fP (match
266 as a word) and \fB-x\fP (match whole line) options can be used with \fB-F\fP.
267 They apply to each of the fixed strings. A line is selected if any of the fixed
268 strings are found in it (subject to \fB-w\fP or \fB-x\fP, if present). This
269 option applies only to the patterns that are matched against the contents of
270 files; it does not apply to patterns specified by any of the \fB--include\fP or
271 \fB--exclude\fP options.
272 .TP
273 \fB-f\fP \fIfilename\fP, \fB--file=\fP\fIfilename\fP
274 Read patterns from the file, one per line, and match them against
275 each line of input. What constitutes a newline when reading the file is the
276 operating system's default. The \fB--newline\fP option has no effect on this
277 option. Trailing white space is removed from each line, and blank lines are
278 ignored. An empty file contains no patterns and therefore matches nothing. See
279 also the comments about multiple patterns versus a single pattern with
280 alternatives in the description of \fB-e\fP above.
281 .sp
282 If this option is given more than once, all the specified files are
283 read. A data line is output if any of the patterns match it. A filename can
284 be given as "-" to refer to the standard input. When \fB-f\fP is used, patterns
285 specified on the command line using \fB-e\fP may also be present; they are
286 tested before the file's patterns. However, no other pattern is taken from the
287 command line; all arguments are treated as the names of paths to be searched.
288 .TP
289 \fB--file-list\fP=\fIfilename\fP
290 Read a list of files and/or directories that are to be scanned from the given
291 file, one per line. Trailing white space is removed from each line, and blank
292 lines are ignored. These paths are processed before any that are listed on the
293 command line. The filename can be given as "-" to refer to the standard input.
294 If \fB--file\fP and \fB--file-list\fP are both specified as "-", patterns are
295 read first. This is useful only when the standard input is a terminal, from
296 which further lines (the list of files) can be read after an end-of-file
297 indication. If this option is given more than once, all the specified files are
298 read.
299 .TP
300 \fB--file-offsets\fP
301 Instead of showing lines or parts of lines that match, show each match as an
302 offset from the start of the file and a length, separated by a comma. In this
303 mode, no context is shown. That is, the \fB-A\fP, \fB-B\fP, and \fB-C\fP
304 options are ignored. If there is more than one match in a line, each of them is
305 shown separately. This option is mutually exclusive with \fB--line-offsets\fP
306 and \fB--only-matching\fP.
307 .TP
308 \fB-H\fP, \fB--with-filename\fP
309 Force the inclusion of the filename at the start of output lines when searching
310 a single file. By default, the filename is not shown in this case. For matching
311 lines, the filename is followed by a colon; for context lines, a hyphen
312 separator is used. If a line number is also being output, it follows the file
313 name.
314 .TP
315 \fB-h\fP, \fB--no-filename\fP
316 Suppress the output filenames when searching multiple files. By default,
317 filenames are shown when multiple files are searched. For matching lines, the
318 filename is followed by a colon; for context lines, a hyphen separator is used.
319 If a line number is also being output, it follows the file name.
320 .TP
321 \fB--help\fP
322 Output a help message, giving brief details of the command options and file
323 type support, and then exit. Anything else on the command line is
324 ignored.
325 .TP
326 \fB-I\fP
327 Treat binary files as never matching. This is equivalent to
328 \fB--binary-files\fP=\fIwithout-match\fP.
329 .TP
330 \fB-i\fP, \fB--ignore-case\fP
331 Ignore upper/lower case distinctions during comparisons.
332 .TP
333 \fB--include\fP=\fIpattern\fP
334 If any \fB--include\fP patterns are specified, the only files that are
335 processed are those that match one of the patterns (and do not match an
336 \fB--exclude\fP pattern). This option does not affect directories, but it
337 applies to all files, whether listed on the command line, obtained from
338 \fB--file-list\fP, or by scanning a directory. The pattern is a PCRE regular
339 expression, and is matched against the final component of the file name, not
340 the entire path. The \fB-F\fP, \fB-w\fP, and \fB-x\fP options do not apply to
341 this pattern. The option may be given any number of times. If a file name
342 matches both an \fB--include\fP and an \fB--exclude\fP pattern, it is excluded.
343 There is no short form for this option.
344 .TP
345 \fB--include-from=\fP\fIfilename\fP
346 Treat each non-empty line of the file as the data for an \fB--include\fP
347 option. What constitutes a newline for this purpose is the operating system's
348 default. The \fB--newline\fP option has no effect on this option. This option
349 may be given any number of times; all the files are read.
350 .TP
351 \fB--include-dir\fP=\fIpattern\fP
352 If any \fB--include-dir\fP patterns are specified, the only directories that
353 are processed are those that match one of the patterns (and do not match an
354 \fB--exclude-dir\fP pattern). This applies to all directories, whether listed
355 on the command line, obtained from \fB--file-list\fP, or by scanning a parent
356 directory. The pattern is a PCRE regular expression, and is matched against the
357 final component of the directory name, not the entire path. The \fB-F\fP,
358 \fB-w\fP, and \fB-x\fP options do not apply to this pattern. The option may be
359 given any number of times. If a directory matches both \fB--include-dir\fP and
360 \fB--exclude-dir\fP, it is excluded. There is no short form for this option.
361 .TP
362 \fB-L\fP, \fB--files-without-match\fP
363 Instead of outputting lines from the files, just output the names of the files
364 that do not contain any lines that would have been output. Each file name is
365 output once, on a separate line.
366 .TP
367 \fB-l\fP, \fB--files-with-matches\fP
368 Instead of outputting lines from the files, just output the names of the files
369 containing lines that would have been output. Each file name is output
370 once, on a separate line. Searching normally stops as soon as a matching line
371 is found in a file. However, if the \fB-c\fP (count) option is also used,
372 matching continues in order to obtain the correct count, and those files that
373 have at least one match are listed along with their counts. Using this option
374 with \fB-c\fP is a way of suppressing the listing of files with no matches.
375 .TP
376 \fB--label\fP=\fIname\fP
377 This option supplies a name to be used for the standard input when file names
378 are being output. If not supplied, "(standard input)" is used. There is no
379 short form for this option.
380 .TP
381 \fB--line-buffered\fP
382 When this option is given, input is read and processed line by line, and the
383 output is flushed after each write. By default, input is read in large chunks,
384 unless \fBpcregrep\fP can determine that it is reading from a terminal (which
385 is currently possible only in Unix-like environments). Output to terminal is
386 normally automatically flushed by the operating system. This option can be
387 useful when the input or output is attached to a pipe and you do not want
388 \fBpcregrep\fP to buffer up large amounts of data. However, its use will affect
389 performance, and the \fB-M\fP (multiline) option ceases to work.
390 .TP
391 \fB--line-offsets\fP
392 Instead of showing lines or parts of lines that match, show each match as a
393 line number, the offset from the start of the line, and a length. The line
394 number is terminated by a colon (as usual; see the \fB-n\fP option), and the
395 offset and length are separated by a comma. In this mode, no context is shown.
396 That is, the \fB-A\fP, \fB-B\fP, and \fB-C\fP options are ignored. If there is
397 more than one match in a line, each of them is shown separately. This option is
398 mutually exclusive with \fB--file-offsets\fP and \fB--only-matching\fP.
399 .TP
400 \fB--locale\fP=\fIlocale-name\fP
401 This option specifies a locale to be used for pattern matching. It overrides
402 the value in the \fBLC_ALL\fP or \fBLC_CTYPE\fP environment variables. If no
403 locale is specified, the PCRE library's default (usually the "C" locale) is
404 used. There is no short form for this option.
405 .TP
406 \fB--match-limit\fP=\fInumber\fP
407 Processing some regular expression patterns can require a very large amount of
408 memory, leading in some cases to a program crash if not enough is available.
409 Other patterns may take a very long time to search for all possible matching
410 strings. The \fBpcre_exec()\fP function that is called by \fBpcregrep\fP to do
411 the matching has two parameters that can limit the resources that it uses.
412 .sp
413 The \fB--match-limit\fP option provides a means of limiting resource usage
414 when processing patterns that are not going to match, but which have a very
415 large number of possibilities in their search trees. The classic example is a
416 pattern that uses nested unlimited repeats. Internally, PCRE uses a function
417 called \fBmatch()\fP which it calls repeatedly (sometimes recursively). The
418 limit set by \fB--match-limit\fP is imposed on the number of times this
419 function is called during a match, which has the effect of limiting the amount
420 of backtracking that can take place.
421 .sp
422 The \fB--recursion-limit\fP option is similar to \fB--match-limit\fP, but
423 instead of limiting the total number of times that \fBmatch()\fP is called, it
424 limits the depth of recursive calls, which in turn limits the amount of memory
425 that can be used. The recursion depth is a smaller number than the total number
426 of calls, because not all calls to \fBmatch()\fP are recursive. This limit is
427 of use only if it is set smaller than \fB--match-limit\fP.
428 .sp
429 There are no short forms for these options. The default settings are specified
430 when the PCRE library is compiled, with the default default being 10 million.
431 .TP
432 \fB-M\fP, \fB--multiline\fP
433 Allow patterns to match more than one line. When this option is given, patterns
434 may usefully contain literal newline characters and internal occurrences of ^
435 and $ characters. The output for a successful match may consist of more than
436 one line, the last of which is the one in which the match ended. If the matched
437 string ends with a newline sequence the output ends at the end of that line.
438 .sp
439 When this option is set, the PCRE library is called in "multiline" mode.
440 There is a limit to the number of lines that can be matched, imposed by the way
441 that \fBpcregrep\fP buffers the input file as it scans it. However,
442 \fBpcregrep\fP ensures that at least 8K characters or the rest of the document
443 (whichever is the shorter) are available for forward matching, and similarly
444 the previous 8K characters (or all the previous characters, if fewer than 8K)
445 are guaranteed to be available for lookbehind assertions. This option does not
446 work when input is read line by line (see \fP--line-buffered\fP.)
447 .TP
448 \fB-N\fP \fInewline-type\fP, \fB--newline\fP=\fInewline-type\fP
449 The PCRE library supports five different conventions for indicating
450 the ends of lines. They are the single-character sequences CR (carriage return)
451 and LF (linefeed), the two-character sequence CRLF, an "anycrlf" convention,
452 which recognizes any of the preceding three types, and an "any" convention, in
453 which any Unicode line ending sequence is assumed to end a line. The Unicode
454 sequences are the three just mentioned, plus VT (vertical tab, U+000B), FF
455 (form feed, U+000C), NEL (next line, U+0085), LS (line separator, U+2028), and
456 PS (paragraph separator, U+2029).
457 .sp
458 When the PCRE library is built, a default line-ending sequence is specified.
459 This is normally the standard sequence for the operating system. Unless
460 otherwise specified by this option, \fBpcregrep\fP uses the library's default.
461 The possible values for this option are CR, LF, CRLF, ANYCRLF, or ANY. This
462 makes it possible to use \fBpcregrep\fP to scan files that have come from other
463 environments without having to modify their line endings. If the data that is
464 being scanned does not agree with the convention set by this option,
465 \fBpcregrep\fP may behave in strange ways. Note that this option does not
466 apply to files specified by the \fB-f\fP, \fB--exclude-from\fP, or
467 \fB--include-from\fP options, which are expected to use the operating system's
468 standard newline sequence.
469 .TP
470 \fB-n\fP, \fB--line-number\fP
471 Precede each output line by its line number in the file, followed by a colon
472 for matching lines or a hyphen for context lines. If the filename is also being
473 output, it precedes the line number. This option is forced if
474 \fB--line-offsets\fP is used.
475 .TP
476 \fB--no-jit\fP
477 If the PCRE library is built with support for just-in-time compiling (which
478 speeds up matching), \fBpcregrep\fP automatically makes use of this, unless it
479 was explicitly disabled at build time. This option can be used to disable the
480 use of JIT at run time. It is provided for testing and working round problems.
481 It should never be needed in normal use.
482 .TP
483 \fB-o\fP, \fB--only-matching\fP
484 Show only the part of the line that matched a pattern instead of the whole
485 line. In this mode, no context is shown. That is, the \fB-A\fP, \fB-B\fP, and
486 \fB-C\fP options are ignored. If there is more than one match in a line, each
487 of them is shown separately. If \fB-o\fP is combined with \fB-v\fP (invert the
488 sense of the match to find non-matching lines), no output is generated, but the
489 return code is set appropriately. If the matched portion of the line is empty,
490 nothing is output unless the file name or line number are being printed, in
491 which case they are shown on an otherwise empty line. This option is mutually
492 exclusive with \fB--file-offsets\fP and \fB--line-offsets\fP.
493 .TP
494 \fB-o\fP\fInumber\fP, \fB--only-matching\fP=\fInumber\fP
495 Show only the part of the line that matched the capturing parentheses of the
496 given number. Up to 32 capturing parentheses are supported, and -o0 is
497 equivalent to \fB-o\fP without a number. Because these options can be given
498 without an argument (see above), if an argument is present, it must be given in
499 the same shell item, for example, -o3 or --only-matching=2. The comments given
500 for the non-argument case above also apply to this case. If the specified
501 capturing parentheses do not exist in the pattern, or were not set in the
502 match, nothing is output unless the file name or line number are being printed.
503 .sp
504 If this option is given multiple times, multiple substrings are output, in the
505 order the options are given. For example, -o3 -o1 -o3 causes the substrings
506 matched by capturing parentheses 3 and 1 and then 3 again to be output. By
507 default, there is no separator (but see the next option).
508 .TP
509 \fB--om-separator\fP=\fItext\fP
510 Specify a separating string for multiple occurrences of \fB-o\fP. The default
511 is an empty string. Separating strings are never coloured.
512 .TP
513 \fB-q\fP, \fB--quiet\fP
514 Work quietly, that is, display nothing except error messages. The exit
515 status indicates whether or not any matches were found.
516 .TP
517 \fB-r\fP, \fB--recursive\fP
518 If any given path is a directory, recursively scan the files it contains,
519 taking note of any \fB--include\fP and \fB--exclude\fP settings. By default, a
520 directory is read as a normal file; in some operating systems this gives an
521 immediate end-of-file. This option is a shorthand for setting the \fB-d\fP
522 option to "recurse".
523 .TP
524 \fB--recursion-limit\fP=\fInumber\fP
525 See \fB--match-limit\fP above.
526 .TP
527 \fB-s\fP, \fB--no-messages\fP
528 Suppress error messages about non-existent or unreadable files. Such files are
529 quietly skipped. However, the return code is still 2, even if matches were
530 found in other files.
531 .TP
532 \fB-u\fP, \fB--utf-8\fP
533 Operate in UTF-8 mode. This option is available only if PCRE has been compiled
534 with UTF-8 support. All patterns (including those for any \fB--exclude\fP and
535 \fB--include\fP options) and all subject lines that are scanned must be valid
536 strings of UTF-8 characters.
537 .TP
538 \fB-V\fP, \fB--version\fP
539 Write the version numbers of \fBpcregrep\fP and the PCRE library to the
540 standard output and then exit. Anything else on the command line is
541 ignored.
542 .TP
543 \fB-v\fP, \fB--invert-match\fP
544 Invert the sense of the match, so that lines which do \fInot\fP match any of
545 the patterns are the ones that are found.
546 .TP
547 \fB-w\fP, \fB--word-regex\fP, \fB--word-regexp\fP
548 Force the patterns to match only whole words. This is equivalent to having \eb
549 at the start and end of the pattern. This option applies only to the patterns
550 that are matched against the contents of files; it does not apply to patterns
551 specified by any of the \fB--include\fP or \fB--exclude\fP options.
552 .TP
553 \fB-x\fP, \fB--line-regex\fP, \fB--line-regexp\fP
554 Force the patterns to be anchored (each must start matching at the beginning of
555 a line) and in addition, require them to match entire lines. This is equivalent
556 to having ^ and $ characters at the start and end of each alternative branch in
557 every pattern. This option applies only to the patterns that are matched
558 against the contents of files; it does not apply to patterns specified by any
559 of the \fB--include\fP or \fB--exclude\fP options.
560 .
561 .
563 .rs
564 .sp
565 The environment variables \fBLC_ALL\fP and \fBLC_CTYPE\fP are examined, in that
566 order, for a locale. The first one that is set is used. This can be overridden
567 by the \fB--locale\fP option. If no locale is set, the PCRE library's default
568 (usually the "C" locale) is used.
569 .
570 .
572 .rs
573 .sp
574 The \fB-N\fP (\fB--newline\fP) option allows \fBpcregrep\fP to scan files with
575 different newline conventions from the default. Any parts of the input files
576 that are written to the standard output are copied identically, with whatever
577 newline sequences they have in the input. However, the setting of this option
578 does not affect the interpretation of files specified by the \fB-f\fP,
579 \fB--exclude-from\fP, or \fB--include-from\fP options, which are assumed to use
580 the operating system's standard newline sequence, nor does it affect the way in
581 which \fBpcregrep\fP writes informational messages to the standard error and
582 output streams. For these it uses the string "\en" to indicate newlines,
583 relying on the C I/O library to convert this to an appropriate sequence.
584 .
585 .
587 .rs
588 .sp
589 Many of the short and long forms of \fBpcregrep\fP's options are the same
590 as in the GNU \fBgrep\fP program. Any long option of the form
591 \fB--xxx-regexp\fP (GNU terminology) is also available as \fB--xxx-regex\fP
592 (PCRE terminology). However, the \fB--file-list\fP, \fB--file-offsets\fP,
593 \fB--include-dir\fP, \fB--line-offsets\fP, \fB--locale\fP, \fB--match-limit\fP,
594 \fB-M\fP, \fB--multiline\fP, \fB-N\fP, \fB--newline\fP, \fB--om-separator\fP,
595 \fB--recursion-limit\fP, \fB-u\fP, and \fB--utf-8\fP options are specific to
596 \fBpcregrep\fP, as is the use of the \fB--only-matching\fP option with a
597 capturing parentheses number.
598 .P
599 Although most of the common options work the same way, a few are different in
600 \fBpcregrep\fP. For example, the \fB--include\fP option's argument is a glob
601 for GNU \fBgrep\fP, but a regular expression for \fBpcregrep\fP. If both the
602 \fB-c\fP and \fB-l\fP options are given, GNU grep lists only file names,
603 without counts, but \fBpcregrep\fP gives the counts.
604 .
605 .
607 .rs
608 .sp
609 There are four different ways in which an option with data can be specified.
610 If a short form option is used, the data may follow immediately, or (with one
611 exception) in the next command line item. For example:
612 .sp
613   -f/some/file
614   -f /some/file
615 .sp
616 The exception is the \fB-o\fP option, which may appear with or without data.
617 Because of this, if data is present, it must follow immediately in the same
618 item, for example -o3.
619 .P
620 If a long form option is used, the data may appear in the same command line
621 item, separated by an equals character, or (with two exceptions) it may appear
622 in the next command line item. For example:
623 .sp
624   --file=/some/file
625   --file /some/file
626 .sp
627 Note, however, that if you want to supply a file name beginning with ~ as data
628 in a shell command, and have the shell expand ~ to a home directory, you must
629 separate the file name from the option, because the shell does not treat ~
630 specially unless it is at the start of an item.
631 .P
632 The exceptions to the above are the \fB--colour\fP (or \fB--color\fP) and
633 \fB--only-matching\fP options, for which the data is optional. If one of these
634 options does have data, it must be given in the first form, using an equals
635 character. Otherwise \fBpcregrep\fP will assume that it has no data.
636 .
637 .
639 .rs
640 .sp
641 It is possible to supply a regular expression that takes a very long time to
642 fail to match certain lines. Such patterns normally involve nested indefinite
643 repeats, for example: (a+)*\ed when matched against a line of a's with no final
644 digit. The PCRE matching function has a resource limit that causes it to abort
645 in these circumstances. If this happens, \fBpcregrep\fP outputs an error
646 message and the line that caused the problem to the standard error stream. If
647 there are more than 20 such errors, \fBpcregrep\fP gives up.
648 .P
649 The \fB--match-limit\fP option of \fBpcregrep\fP can be used to set the overall
650 resource limit; there is a second option called \fB--recursion-limit\fP that
651 sets a limit on the amount of memory (usually stack) that is used (see the
652 discussion of these options above).
653 .
654 .
656 .rs
657 .sp
658 Exit status is 0 if any matches were found, 1 if no matches were found, and 2
659 for syntax errors, overlong lines, non-existent or inaccessible files (even if
660 matches were found in other files) or too many matching errors. Using the
661 \fB-s\fP option to suppress error messages about inaccessible files does not
662 affect the return code.
663 .
664 .
665 .SH "SEE ALSO"
666 .rs
667 .sp
668 \fBpcrepattern\fP(3), \fBpcresyntax\fP(3), \fBpcretest\fP(1).
669 .
670 .
672 .rs
673 .sp
674 .nf
675 Philip Hazel
676 University Computing Service
677 Cambridge CB2 3QH, England.
678 .fi
679 .
680 .
682 .rs
683 .sp
684 .nf
685 Last updated: 03 April 2014
686 Copyright (c) 1997-2014 University of Cambridge.
687 .fi