Command: xgrep
XGREP is a program for searching text files based on the UNIX utility
GREP. You can use XGREP to:
- display the lines in a file that contain a particular word,
phrase or pattern;
- count those lines in which a particular pattern occurs; or
generate a list of files that refer to a given topic.
Syntax:
xgrep [-chlnsvyorx] expression [files]
xgrep [/chlnsvyorx] expression [files]
expression the expression to search, may also be classes.
Options:
-c Line count only.
-h No file names.
-l File names only.
-n Number of lines.
-o Errors to stdout - error messages will be redirected along with
standard output.
-r Recursively search subdirectories - looks for files not only in
the specified directory but in all the subdirectories of that
directory.
-s Silent about inaccessible files.
-v Non-matching lines - "inverts" the result of any match.
-x No magic: all operators need '\'. The -x option causes the
ordinarily "special" characters: . [ * + ? ^ $ to be parsed, by
default, as literals. For example, the following commands are
equivalent:
xgrep "p\[0] \* 3" test.c
xgrep -x "p[0] * 3" test.c
All regular expression operators are still accessible, but must
be preceded by a \ (backslash).
-y Case-insensitive match - matching is not case-sensitive.
Two further options are supported as aliases for other options:
-d is an alias for -r.
-i is an alias for -y.
Comments:
Like GREP, XGREP works best on plain text files: the sort of files
that do not contain binary data or non-ASCII control characters, and
which are divided into lines or records ending in a '\n' (newline).
XGREP supports text files in both UNIX (LF) and MS-DOS (CR, LF)
formats.
In XGREP, the : (colon) may be used to refer to predefined classes.
The twelve predefined classes, together with their definitions, are as
follows:
:a Alpha alphabetic [A-Za-z] =ASCII range: 65-90,97-122
:c Cntrl control =ASCII range: 0-31,127
:d Digit digits [0-9] =ASCII range: 48-57
:g Graph graphics [!-˜] =ASCII range: 33-126
:l Lower lowercase [a-z] =ASCII range: 97-122
:n Alnum alphanumeric [0-9A-Za-z] =ASCII range: 48-57,65-90,
97-122
:p Punct punctuation [!-/:-@[-`{-˜] =ASCII range: 33-47,58-64,
91-96, 123-126
:s Space whitespace =ASCII range: 9-13,32
:t Print printable [ -˜] =ASCII range: 32-126
:u Upper uppercase [A-Z] =ASCII range: 65-90
:x Xdigit hex digits [0-9A-Fa-f] =ASCII range: 48-57,65-70,
97-102
:z ASCII =ASCII range: 0-127
Signs to specify the context:
^ Start of line
$ End of line
. Wildcard
[] Character class
[^] Inverse Class
\ Quote next character
Repeat:
* 0 or more times
+ 1 or more times
? 0 or 1 times
\{m\} m times
\{m,\} m or more times
\{m,u\} m to u times
For more information about ":" and "signs to specify the context"
please read XGREP.DOC.
XGREP has the following EXITCODES (ERRORLEVEL):
0 At least one match found.
1 No matches found.
2 Error(s) occurred.
Examples:
xgrep "Hello World" *.c
xgrep -c jill group
xgrep -l SCSI *.doc
xgrep widgets
xgrep -n widgets notes.txt
xgrep -n -rs widgets \*.txt \*.doc
See also:
find
Copyright ©2008 W. Spiegl. Updated in 2020.
This file is derived from the FreeDOS Spec Command HOWTO.
See the file H2Cpying for copying conditions.