Section 6.4. Examples of Searching

6.4. Examples of Searching

When 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. Tables 6-6 through Table 6-9 show some example patterns.

Table 6-6. General search patterns

Pattern

What does it match?

bag

The string bag anywhere in the line

^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 anywhere in the line.

b[aeiou]g

b , a vowel, and g .

b[^aeiou]g

b , a consonant (or uppercase or symbol), and g .

b.g

b , any character, and g .

^...$

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, anywhere on the line

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


Table 6-7. egrep and awk search patterns

egrep or awk pattern

What does it match?

[567]

One of the digits 5 , 6 , or 7 .

fivesixseven

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(yies)

company or companies .


Table 6-8. ex and vi search 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 .


Table 6-9. ed, sed and grep search 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.1. Examples of Searching and Replacing

The examples in Table 6-10 show the metacharacters available to sed and vi . We have shown vi commands with an initial colon because that is how they are invoked with vi . A space is marked by a ; a tab is marked by tab .

Table 6-10. Searching and replacing

Command

Result

s/.*/( & )/

Redo the entire line, but add parentheses.

s/.*/mv & &.old/

Change a word list (one word per line) into mv commands.

/^$/d

Delete blank lines.

:g/^$/d

Same as previous, in vi editor.

/^[ tab ]*$/d

Delete blank lines, plus lines containing only spaces or tabs.

:g/^[ tab ]*$/d

Same as previous, in vi 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, here are 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\)/ or /  Transpose, using hold buffers  



MAC OS X Tiger in a Nutshell
Mac OS X Tiger in a Nutshell: A Desktop Quick Reference (In a Nutshell (OReilly))
ISBN: 0596009437
EAN: 2147483647
Year: 2003
Pages: 130

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net