,
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.
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: .*/& Name: ???? Rate: ?? Phone: ??/p }