[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 }