home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  

UNIX in a Nutshell: System V Edition

UNIX in a Nutshell: System V EditionSearch this book
Previous: 6.3 Metacharacters Chapter 6
Pattern Matching
Next: 7. The Emacs Editor

6.4 Examples of Searching

When used with grep or egrep , regular expressions are surrounded by quotes. (If the pattern contains a $, you must use single quotes; e.g., ' pattern ' .) When used with ed, ex, sed, and awk, regular expressions are usually surrounded by / (although any delimiter works). Here are some example patterns:

Pattern What does it match?
bag The string bag .
^bag bag at beginning of line.
bag$ bag at end of line.
^bag$ bag as the only word on line.
[Bb]ag Bag or bag .
b[aeiou]g Second letter is a vowel.
b[^aeiou]g Second letter is a consonant (or uppercase or symbol).
b.g Second letter is any character.
^...$ Any line containing exactly three characters.
^\. Any line that begins with a dot.
^\.[a-z][a-z] Same, followed by two lowercase letters (e.g., troff requests).
^\.[a-z]\{2\} Same as previous, grep or sed only.
^[^.] Any line that doesn't begin with a dot.
bugs* bug , bugs , bugss , etc.
"word" A word in quotes.
"*word"* A word, with or without quotes.
[A-Z][A-Z]* One or more uppercase letters.
[A-Z]+ Same, egrep or awk only.
[A-Z].* An uppercase letter, followed by zero or more characters.
[A-Z]* Zero or more uppercase letters.
[a-zA-Z] Any letter.
[^0-9A-Za-z] Any symbol (not a letter or a number).
egrep or awk pattern What does it match?
[567] One of the numbers 5 , 6 , or 7 .
five|six|seven One of the words five , six , or seven .
80[23]?86 8086 , 80286 , or 80386
compan(y|ies) company or companies
ex or vi pattern What does it match?
\<the Words like theater or the .
the\> Words like breathe or the .
\<the\> The word the .
sed or grep pattern What does it match?
0\{5,\} Five or more zeros in a row.
[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\} Social security number ( nnn - nn - nnnn ).

6.4.1 Examples of Searching and Replacing

The following examples show the metacharacters available to sed or ex. Note that ex commands begin with a colon. A space is marked by a  ; a tab is marked by tab .

Command Result
s/.*/( & )/ Redo the entire line, but add parentheses.
s/.*/mv & &.old/ Change a wordlist (one word per line) into mv commands.
/^$/d Delete blank lines.
:g/^$/d Same as previous, in ex editor.
/^[ tab ]*$/d Delete blank lines, plus lines containing spaces or tabs.
:g/^[ tab ]*$/d Same as previous, in ex editor.
s/  */ /g Turn one or more spaces into one space.
%s/  */ /g Same as previous, in ex editor.
:s/[0-9]/Item &:/ Turn a number into an item label (on the current line).
:s Repeat the substitution on the first occurrence.
:& Same as previous.
:sg Same, but for all occurrences on the line.
:&g Same as previous.
:%&g Repeat the substitution globally.
:.,$s/Fortran/\U&/g Change word to uppercase, on current line to last line.
:%s/.*/\L&/ Lowercase entire file.
:s/\<./\u&/g Uppercase first letter of each word on current line. (Useful for titles.)
:%s/yes/No/g Globally change a word to No .
:%s/Yes/~/g Globally change a different word to No (previous replacement).

Finally, some sed examples for transposing words. A simple transposition of two words might look like this:

s/die or do/do or die/	
Transpose words.

The real trick is to use hold buffers to transpose variable patterns. For example:

s/\([Dd]ie\) or \([Dd]o\)/\2 or \1/	
Transpose, using hold buffers.

Previous: 6.3 Metacharacters UNIX in a Nutshell: System V Edition Next: 7. The Emacs Editor
6.3 Metacharacters Book Index 7. The Emacs Editor

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System