6.4. Examples of SearchingWhen used with grep or egrep, regular expressions
should be 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
(except for awk) any
delimiter works. The following tables show some example patterns.
6.4.1. General patterns
| Pattern | What Does It Match? |
| bag | The string bag. |
| ^bag | bag at the beginning of the line. |
| bag$ | bag at the end of the line. |
| ^bag$ | bag as the only word on the 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;
ed,
grep, and 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.
|
| [[:upper:]]+ | Same; POSIX egrep or awk.
|
| [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 or space (not a letter or a number).
|
| [^[:alnum:]] | Same, using POSIX character class.
|
6.4.2. Egrep and awk patterns
| 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[2-4]?86 | 8086, 80286, 80386,
or 80486.
|
| 80[2-4]?86|(Pentium(-II)?) | 8086, 80286, 80386,
80486,
Pentium, or
Pentium-II.
|
| compan(y|ies) | company or companies. |
6.4.3. Ex and vi patterns
| ex or vi Pattern | What Does It Match? |
| \<the | Words like theater or the. |
| the\> | Words like breathe or the. |
| \<the\> | The word the. |
6.4.4. Ed, sed and grep patterns
| ed, 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\} | U.S. Social Security number (nnn-nn-nnnn).
|
| \(why\).*\1 | A line with two occurrences of why.
|
| \([[:alpha:]_][[:alnum:]_.]*\) = \1; | C/C++ simple assignment statements.
|
6.4.5. Examples of Searching and Replacing
The examples in Table 6-6 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 a tab.
Table 6-6. Searching and Replacing
| 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 only 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 (i.e., on all lines).
|
| :.,$s/Fortran/\U&/g | On current line to last line, change word to uppercase.
|
| :%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
 |  |  | | 6.3. Metacharacters |  | 7. The Emacs Editor |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|
|