| GNU Bash Reference Manual by Chet Ramey and Brian Fox Paperback (6"x9"), 180 pages ISBN 0954161777 RRP £19.95 ($29.95) "An essential resource .... the most detailed coverage available for all aspects of Bash" --- Linux User and Developer Magazine (Issue 37, Mar 2004) Get a printed copy>>> |
3.5.8.1 Pattern Matching
Any character that appears in a pattern, other than the special pattern characters described below, matches itself. The NUL character may not occur in a pattern. A backslash escapes the following character; the escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally.
The special pattern characters have the following meanings:
*- Matches any string, including the null string.
?- Matches any single character.
[...]-
Matches any one of the enclosed characters. A pair of characters
separated by a hyphen denotes a range expression;
any character that sorts between those two characters, inclusive,
using the current locale's collating sequence and character set,
is matched. If the first character following the
‘[’ is a ‘!’ or a ‘^’
then any character not enclosed is matched. A ‘-’
may be matched by including it as the first or last character
in the set. A ‘]’ may be matched by including it as the first
character in the set.
The sorting order of characters in range expressions is determined by
the current locale and the value of the
LC_COLLATEshell variable, if set. For example, in the default C locale, ‘[a-dx-z]’ is equivalent to ‘[abcdxyz]’. Many locales sort characters in dictionary order, and in these locales ‘[a-dx-z]’ is typically not equivalent to ‘[abcdxyz]’; it might be equivalent to ‘[aBbCcDdxXyYz]’, for example. To obtain the traditional interpretation of ranges in bracket expressions, you can force the use of the C locale by setting theLC_COLLATEorLC_ALLenvironment variable to the value ‘C’. Within ‘[’ and ‘]’, character classes can be specified using the syntax[:class:], where class is one of the following classes defined in the POSIX standard:alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit
A character class matches any character belonging to that class. Thewordcharacter class matches letters, digits, and the character ‘_’. Within ‘[’ and ‘]’, an equivalence class can be specified using the syntax[=c=], which matches all characters with the same collation weight (as defined by the current locale) as the character c. Within ‘[’ and ‘]’, the syntax[.symbol.]matches the collating symbol symbol.
If the extglob shell option is enabled using the shopt
builtin, several extended pattern matching operators are recognized.
In the following description, a pattern-list is a list of one
or more patterns separated by a ‘|’.
Composite patterns may be formed using one or more of the following
sub-patterns:
?(pattern-list)- Matches zero or one occurrence of the given patterns.
*(pattern-list)- Matches zero or more occurrences of the given patterns.
+(pattern-list)- Matches one or more occurrences of the given patterns.
@(pattern-list)- Matches one of the given patterns.
!(pattern-list)- Matches anything except one of the given patterns.
| ISBN 0954161777 | GNU Bash Reference Manual | See the print edition |