[address1
][,
address2
]t
[label
]
Test if any substitutions have been made on addressed lines, and if so, branch to line marked by
:
label
. (See
b
and
:
.) If
label
is not specified, control falls through to bottom of script. The
t
command is like a case statement in the C programming language or the shell programming languages. You test each case: when it's true, you exit the construct.
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):
/ID/{ s/ID: .* Name: .* Rate: .*/& Phone: ??/p t s/ID: .* Name: .*/& Rate: ?? Phone: ??/p t s/ID: .*/& Name: ?? Rate: ?? Phone: ??/p }