Você pode fazer
awk -v newvalue=2000 '
NR == 1 {
for (i=1; i<=NF; i++) {
if ($i == "foo") i_foo=i
if ($i == "bar") i_bar=i
}
}
NR == 2 {$i_foo = $i_bar = newvalue}
{print}
' file.dat | column -t
var1 var2 var3 foo bar
T T T 2000 2000
Ou com menos hard-coding no awk
awk -v cols="var2=1234,bar=5678" '
BEGIN {
n = split(cols, a, /[=,]/)
for (i=1; i<n; i+=2) newval[a[i]] = a[i+1]
}
NR == 1 { for (i=1; i<=NF; i++) if ($i in newval) idx[$i] = i }
NR == 2 { for (col in idx) $(idx[col]) = newval[col] }
{print}
' file.dat | column -t
var1 var2 var3 foo bar
T 1234 T 100 5678