
t | 767
sed
This is the Title of the Book, eMatter Edition
Copyright © 2006 O’Reilly & Associates, Inc. All rights reserved.
\U Uppercase the replacement text until a terminating \E or \L.
\u Uppercase the following character only.
\E Terminate case conversion from \L or \U.
Examples
Here are some short, commented scripts:
# Change third and fourth quote to ( and ):
/function/{
s/"/)/4
s/"/(/3
}
# Remove all quotes on a given line:
/Title/s/"//g
# Remove first colon and all quotes; print resulting
lines:
s/://p
s/"//gp
# Change first "if" but leave "ifdef" alone:
/ifdef/!s/if/ if/
t
[address1[,address2]]t [label]
Test if successful substitutions have been made on addressed lines,
and if so, branch to the line marked by :label. (See b and
:.) If label
is not specified, control branches to the bottom of the script. The t
command is like a case statement in the C programming language
or the various shell programming languages. You test each case;
when it’s true, you exit the construct.
Example
Suppose you want to fill empty fields of a database. You have this:
ID: 1 Name: greg Rate: 45
ID: 2 Name: dale
ID: 3
You want this:
ID: 1 Name: greg Rate: 45 Phone: ??
ID: 2 Name: dale Rate: ?? Phone: ??
ID: 3 Name: ???? Rate: ?? Phone: ??
You need to test the number of fields already there. Here’s the
script (fields are tab-separated):
#n
/ID/{
s/ID: .* Name: .* Rate: .*/& Phone: ??/p
t
s/ID: .* Name: .*/& Rate: ?? Phone: ??/p
t
s/ID: .*/& ...