Softpanorama
(slightly skeptical) Open Source Software Educational Society

May the source be with you, but remember the KISS principle ;-)

Softpanorama Search

Grep Reference

News Regex Man pages Options Sun Grep Options

Examples

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 either linking /usr/xpg4/bin/grep to grep or better using GNU version of grep 2.51(supplied by Sun or downloadable from SunFreeware.com ) instead, whenever possible. this is not much hassle to install it with Solaris.

Man pages

GNU grep documentation

Solaris 10 grep(1) manpage  – search a file for a pattern

Packages

Solaris 9 for SPARC Freeware List

Debian grep package

Filewatcher FTP Search -- nice tool for finding packages

Sun Grep

Solaris 9 Reference Manual Collection 

Options

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 \>.

/usr/xpg4/bin/grep

Examples

Environment Variables

Exit Status

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

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).

BASIC REGULAR EXPRESSIONS

EXTENDED REGULAR EXPRESSIONS

 

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

Fgrep -- fast grep

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.

 

Regular Expressions Reference Sheet

 

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

 


Copyright © 1996-2009 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Site uses AdSense so you need to be aware of Google privacy policy. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

Disclaimer:

Created: May 16, 1997; Last modified: August 09, 2009