# The bug here is that nawk should use the value of OFS that | |
# was current when $0 became invalid to rebuild the record. | |
BEGIN { | |
OFS = ":" | |
$0 = "a b c d e f g" | |
$3 = "3333" | |
# Conceptually, $0 should now be "a:b:3333:d:e:f:g" | |
# Change OFS after (conceptually) rebuilding the record | |
OFS = "<>" | |
# Unmodifed nawk prints "a<>b<>3333<>d<>e<>f<>g" because | |
# it delays rebuilding $0 until it's needed, and then it uses | |
# the current value of OFS. Oops. | |
} |