|
Home | Switchboard | Unix Administration | Red Hat | TCP/IP Networks | Neoliberalism | Toxic Managers |
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and bastardization of classic Unix |
News | grep command | Regex | Options | Sun Grep | Options | Env variables | Exit Status |
|
Sun has an old and pretty weak implementation of grep that does not support -P (Perl-style regular expressions) option but it does has a good man page :-). I recommend using GNU version of grep (supplied by Sun or downloadable from SunFreeware.com ) instead, whenever possible. this is not much hassle to install it with Solaris.
|
Solaris 10 g
Solaris 9 for SPARC Freeware List
Filewatcher FTP Search -- nice tool for finding packages
Solaris 9 Reference Manual Collection
Be careful using the characters $, *, [, ^, |, (, ), and \ in the pattern_list because they are also meaningful to the shell. It is safest to enclose the entire pattern_list in single quotes �... �.
If no files are specified, grep assumes standard input. Normally, each line found is copied to standard output. The file name is printed before each line found if there is more than one input file.
The following options are supported for both /usr/bin/grep and /usr/xpg4/bin/grep:
- -b
- Precede each line by the block number on which it was found. This can be useful in locating block numbers by context (first block is 0).
- -c
- Print only a count of the lines that contain the pattern.
- -h
- Prevents the name of the file containing the matching line from being appended to that line. Used when searching multiple files.
- -i
- Ignore upper/lower case distinction during comparisons.
- -l
- Print only the names of files with matching lines, separated by NEWLINE characters. Does not repeat the names of files when the pattern is found more than once.
- -n
- Precede each line by its line number in the file (first line is 1).
- -s
- Suppress error messages about nonexistent or unreadable files.
- -v
- Print all lines except those that contain the pattern.
- -w
- Search for the expression as a word as if surrounded by \< and \>.
The following options are supported for /usr/xpg4/bin/grep only:
The order of precedence of operators is [], then *?+,
then concatenation, then | and new-line.
To find all uses of the word "Posix" (in any case) in the file text.mm, and write with line numbers:
example% /usr/bin/fgrep -i -n posix text.mm |
To find all empty lines in the standard input:
example% /usr/bin/grep ^$or
example% /usr/bin/grep -v
.
Both of the following commands print all lines containing strings abc or def or both:
example% /usr/xpg4/bin/grep -E 'abc def'
or
example% /usr/xpg4/bin/grep -F 'abc def'
Both of the following commands print all lines matching exactly abc or def:
example% /usr/xpg4/bin/grep -E '^abc$ ^def$'
or
example% /usr/xpg4/bin/grep -F -x 'abc def'
See environ(5) for descriptions of the following environment variables that affect the execution of grep: LC_COLLATE, LC_CTYPE, LC_MESSAGES, and NLSPATH.
The following exit values are returned:
Solaris 9 Reference Manual Collection >> man pages section 5: Standards, Environments, and Macros >> Standards, Environments, and Macros >> regex(5) - internationalized basic and extended regular expression matching
regex- internationalized basic and extended regular expression matching
Regular Expressions (REs) provide a mechanism to select specific strings from a set of character strings. The Internationalized Regular Expressions described below differ from the Simple Regular Expressions described on the regexp(5) manual page in the following ways:
The Basic Regular Expression (BRE) notation and construction rules described in the BASIC REGULAR EXPRESSIONS section apply to most utilities supporting regular expressions. Some utilities, instead, support the Extended Regular Expressions (ERE) described in the EXTENDED REGULAR EXPRESSIONS section; any exceptions for both cases are noted in the descriptions of the specific utilities using regular expressions. Both BREs and EREs are supported by the Regular Expression Matching interfaces regcomp(3C) and regexec(3C).
A BRE ordinary character, a special character preceded by a backslash, or a period matches a single character. A bracket expression matches a single character or a single collating element. See RE Bracket Expression, below.
An ordinary character is a BRE that matches itself: any character in the supported character set, except for the BRE special characters listed in BRE Special Characters, below.
The interpretation of an ordinary character preceded by a backslash (\) is undefined, except for:
A BRE special character has special properties in certain contexts. Outside those contexts, or when preceded by a backslash, such a character will be a BRE that matches the special character itself. The BRE special characters and the contexts in which they have their special meaning are:
A period (.), when used outside a bracket expression, is a BRE that matches any character in the supported character set except NUL.
A bracket expression (an expression enclosed in square brackets, []) is an RE that matches a single collating element contained in the non-empty set of collating elements represented by the bracket expression.
The following rules and definitions apply to bracket expressions:
. * [ \ |
(period, asterisk, left-bracket and backslash, respectively) lose their special meaning within a bracket expression.
[. [= [:(left-bracket followed by a period, equals-sign, or colon) are special inside a bracket expression and are used to delimit collating symbols, equivalence class expressions, and character class expressions. These symbols must be followed by a valid expression and the matching terminating sequence .], =] or :], as described in the following items.
The following character class expressions are supported in all locales:
[:alnum:] | [:cntrl:] | [:lower:] | [:space:] |
[:alpha:] | [:digit:] | [:print:] | [:upper:] |
[:blank:] | [:graph:] | [:punct:] | [:xdigit:] |
In addition, character class expressions of the form:
[:name:] |
are recognized in those locales where the name keyword has been given a charclass definition in the LC_CTYPE category.
Range expressions must not be used in portable applications because their behavior is dependent on the collating sequence. Ranges will be treated according to the current collating sequence, and include such characters that fall within the range based on that collating sequence, regardless of character values. This, however, means that the interpretation will differ depending on collating sequence. If, for instance, one collating sequence defines as a variant of a, while another defines it as a letter following z, then the expression [-z] is valid in the first language and invalid in the second.
In the following, all examples assume the collation sequence specified for the POSIX locale, unless another collation sequence is specifically defined.
The starting range point and the ending range point must be a collating element or collating symbol. An equivalence class expression used as a starting or ending point of a range expression produces unspecified results. An equivalence class can be used portably within a bracket expression, but only outside the range. For example, the unspecified expression [[=e=]-f] should be given as [[=e=]e-f]. The ending range point must collate equal to or higher than the starting range point; otherwise, the expression will be treated as invalid. The order used is the order in which the collating elements are specified in the current collation definition. One-to-many mappings (see locale(5)) will not be performed. For example, assuming that the character eszet is placed in the collation sequence after r and s, but before t, and that it maps to the sequence ss for collation purposes, then the expression [r-s] matches only r and s, but the expression [s-t] matches s, beta, or t.
The interpretation of range expressions where the ending range point is also the starting range point of a subsequent range expression (for instance [a-m-o]) is undefined.
The hyphen character will be treated as itself if it occurs first (after an initial ^, if any) or last in the list, or as an ending range point in a range expression. As examples, the expressions [-ac] and [ac-] are equivalent and match any of the characters a, c, or -; [^-ac] and [^ac-] are equivalent and match any characters except a, c, or -; the expression [%--] matches any of the characters between % and - inclusive; the expression [--@] matches any of the characters between - and @ inclusive; and the expression [a--@] is invalid, because the letter a follows the symbol - in the POSIX locale. To use a hyphen as the starting range point, it must either come first in the bracket expression or be specified as a collating symbol, for example: [][.-.]-0], which matches either a right bracket or any character or collating element that collates between hyphen and 0, inclusive.
If a bracket expression must specify both - and ], the ] must be placed first (after the ^, if any) and the - last within the bracket expression.
Note: Latin-1 characters such as ` or ^ are not printable in some locales, for example, the ja locale.
The following rules can be used to construct BREs matching multiple characters from BREs matching a single character:
\(\(\(ab\)*c\)*d\)\(ef\)*\(gh\)\{2\}\(ij\)*\(kl\)*\(mn\)*\(op\)*\(qr\)* |
For example, in the string abababccccccd, the BRE c\{3\} is matched by characters seven to nine, the BRE \(ab\)\{4,\} is not matched at all and the BRE c\{1,3\}d is matched by characters ten to thirteen.
The behavior of multiple adjacent duplication symbols ( * and intervals) produces undefined results.
The order of precedence is as shown in the following table:
BRE Precedence (from high to low) | |
collation-related bracket symbols | [= =] [: :] [. .] |
escaped characters | \<special character> |
bracket expression | [ ] |
subexpressions/back-references | \( \) \n |
single-character-BRE duplication | * \{m,n\} |
concatenation | |
anchoring | ^ $ |
A BRE can be limited to matching strings that begin or end a line; this is called anchoring. The circumflex and dollar sign special characters will be considered BRE anchors in the following contexts:
Note: The Solaris implementation does not support anchoring in BRE subexpressions.
The rules specififed for BREs apply to Extended Regular Expressions (EREs) with the following exceptions:
An ERE ordinary character, a special character preceded by a backslash, or a period matches a single character. A bracket expression matches a single character or a single collating element. An ERE matching a single character enclosed in parentheses matches the same as the ERE without parentheses would have matched.
An ordinary character is an ERE that matches itself. An ordinary character is any character in the supported character set, except for the ERE special characters listed in ERE Special Characters below. The interpretation of an ordinary character preceded by a backslash (\) is undefined.
An ERE special character has special properties in certain contexts. Outside those contexts, or when preceded by a backslash, such a character is an ERE that matches the special character itself. The extended regular expression special characters and the contexts in which they have their special meaning are:
A period (.), when used outside a bracket expression, is an ERE that matches any character in the supported character set except NUL.
The rules for ERE Bracket Expressions are the same as for Basic Regular Expressions; see RE Bracket Expression, above).
The following rules will be used to construct EREs matching multiple characters from EREs matching a single character:
For example, in the string abababccccccd the ERE c{3} is matched by characters seven to nine and the ERE (ab){2,} is matched by characters one to six.
The behavior of multiple adjacent duplication symbols (+, *, ? and intervals) produces undefined results.
Two EREs separated by the special character vertical-line (|) match a string that is matched by either. For example, the ERE a((bc)|d) matches the string abc and the string ad. Single characters, or expressions matching single characters, separated by the vertical bar and enclosed in parentheses, will be treated as an ERE matching a single character.
The order of precedence will be as shown in the following table:
ERE Precedence (from high to low) | |
collation-related bracket symbols | [= =] [: :] [. .] |
escaped characters | \<special character> |
bracket expression | [ ] |
grouping | ( ) |
single-character-ERE duplication | * + ? {m,n} |
concatenation | |
anchoring | ^ $ |
alternation | | |
For example, the ERE abba|cde matches either the string abba or the string cde (rather than the string abbade or abbcde, because concatenation has a higher order of precedence than alternation).
An ERE can be limited to matching strings that begin or end a line; this is called anchoring. The circumflex and dollar sign special characters are considered ERE anchors when used anywhere outside a bracket expression. This has the following effects:
In Solaris there are only basic and extended version of grep (egrep). Ironically, despite the origin of the name (extended), Solaris egrep actually has less functionality that GNU grep with -P option. A better way to is to replace Solaris grep with GNU grep which implements -P option.
grep | grep -E | Available for egrep? |
a\+ |
a+ |
yes |
a\? |
a? |
yes |
expression1\|expression2 |
expression1|expression2? |
yes |
\(expression\) |
(expression1) |
yes |
\{m,n\} |
{m,n} |
no |
\{,n\} |
{,n} |
no |
\{m,} |
{m,} |
no |
\{m} |
{m} |
no |
Following is the general format of the fgrep command.
fgrep [ -bchilnvx ] [ -e -string ] string file_list fgrep [ -bchilnvx ] [ -e -string ] -f file file_list
Options
The following list describes the options and their arguments that may be used to control how fgrep functions.
-b | Displays the block number in which the pattern was found before the line that contains the matching pattern. |
-c | Displays only a total count of matching lines for each file processed. |
-e -string | The string begins with a dash. This allows you to specify a string that begins with a dash. Normally, any argument beginning with a dash is interpreted as an option, not a string or argument. |
-f file | Read in the strings to search for from file. This allows you to create a file containing all of the strings you want fgrep to search for in the file_list or standard input. |
-h | Suppress the displaying of filenames which precede lines that match the specified patterns when multiple files are searched. |
-i | Ignore the difference between uppercase and lowercase characters during comparisons. |
-l | Displays only the names of the files containing the specified pattern. The lines containing the patterns are not displayed. |
-n | Displays the line number before each line containing the pattern. |
-v | Displays only the lines that do not match the pattern. The v command in the ex editor performs the same type of function. It is an exception search. Search for every line except the ones containing the given pattern. |
-x | Displays only those lines matched in their entirety. |
Character | Definition | Example |
^ |
The pattern has to appear at the beginning of a string. | ^cat matches any string that begins with cat |
$ |
The pattern has to appear at the end of a string. | cat$ matches any string that ends with cat |
. |
Matches any character. | cat. matches catT and cat2 but not catty |
[] |
Bracket expression. Matches one of any characters enclosed. | gr[ae]y matches gray or grey |
[^] |
Negates a bracket expression. Matches one of any characters EXCEPT those enclosed. | 1[^02] matches 13 but not 10 or 12 |
[-] |
Range. Matches any characters within the range. | [1-9] matches any single digit EXCEPT 0 |
? |
Preceding item must match one or zero times. | colou?r matches color or colour but not colouur |
+ |
Preceding item must match one or more times. | be+ matches be or bee but not b |
* |
Preceding item must match zero or more times. | be* matches b or be or beeeeeeeeee |
() |
Parentheses. Creates a substring or item that metacharacters can be applied to | a(bee)?t matches at or abeet but not abet |
{n} |
Bound. Specifies exact number of times for the preceding item to match. | [0-9]{3} matches any three digits |
{n,} |
Bound. Specifies minimum number of times for the preceding item to match. | [0-9]{3,} matches any three or more digits |
{n,m} |
Bound. Specifies minimum and maximum number of times for the preceding item to match. | [0-9]{3,5} matches any three, four, or five digits |
| |
Alternation. One of the alternatives has to match. | July (first|1st|1) will match July 1st but not July 2 |
POSIX Character Classes |
||
Character | Definition | Example |
[:alnum:] |
alphanumeric character | [[:alnum:]]{3} matches any three letters or numbers, like 7Ds |
[:alpha:] |
alphabetic character, any case | [[:alpha:]]{5} matches five alphabetic characters, any case, like aBcDe |
[:blank:] |
space and tab | [[:blank:]]{3,5} matches any three, four, or five spaces and tabs |
[:digit:] |
digits | [[:digit:]]{3,5} matches any three, four, or five digits, like 3, 05, 489 |
[:lower:] |
lowercase | [[:lower:]] matches a but not A |
[:punct:] |
punctuation characters | [[:punct:]] matches ! or . or , but not a or 3 |
[:space:] |
all whitespace characters, including newline and carriage return | [[:space:]] matches any space, tab, newline, or carriage return |
[:upper:] |
uppercase alphabetics | [[:upper:]] matches A but not a |
Perl-Style Metacharacters |
||
Character | Definition | Example |
// |
Default delimiters for pattern | /colou?r/ matches color or colour |
i |
Append to pattern to specify a case insensitive match | /colou?r/i matches COLOR or Colour |
\b |
A word boundary, the spot between word (\w) and non-word (\W) characters | /\bfred\b/i matches Fred but not Alfred or Frederick |
\B |
A non-word boundary | /fred\B/i matches Frederick but not Fred |
\d |
A single digit character | /a\db/i matches a2b but not acb |
\D |
A single non-digit character | /a\Db/i matches aCb but not a2b |
\n |
The newline character. (ASCII 10) | /\n/ matches a newline |
\r |
The carriage return character. (ASCII 13) | /\r/ matches a carriage return |
\s |
A single whitespace character | /a\sb/ matches a b but not ab |
\S |
A single non-whitespace character | /a\Sb/ matches a2b but not a b |
\t |
The tab character. (ASCII 9) | /\t/ matches a tab. |
\w |
A single word character - alphanumeric and underscore | /\w/ matches 1 or _ but not ? |
\W |
A single non-word character | /a\Wb/i matches a!b but not a2b |
Society
Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers : Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism : The Iron Law of Oligarchy : Libertarian Philosophy
Quotes
War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Somerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Bernard Shaw : Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds : Larry Wall : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOS : Programming Languages History : PL/1 : Simula 67 : C : History of GCC development : Scripting Languages : Perl history : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history
Classic books:
The Peter Principle : Parkinson Law : 1984 : The Mythical Man-Month : How to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater�s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright � 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|
You can use PayPal to to buy a cup of coffee for authors of this site |
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.
Last modified: March 12, 2019