Предполагая, что I might receive...
приведет к тому, что вы сможете передать строку с этим значением в awk:
$ cat tst.awk
BEGIN {
FS = ":"
tmp = fmt
sub(/^[^[:alpha:]]+/,"",tmp)
split(tmp,flds,/[^[:alpha:]]+/)
gsub(/[[:alpha:]]+/,"%s",fmt)
fmt = fmt ORS
}
NR==1 {
for (i=1; i<=NF; i++) {
f[$i] = i
}
next
}
{ printf fmt, $(f[flds[1]]), $(f[flds[2]]), $(f[flds[3]]), $(f[flds[4]]) }
$ awk -v fmt='{age} [kilo] surname name' -f tst.awk file
{14} [40kg] Connor Peter
{56} [60kg] Head George
$ awk -v fmt='surname|name|age[[kilo]]' -f tst.awk file
Connor|Peter|14[[40kg]]
Head|George|56[[60kg]]
Для того, чтобы вышеописанное работало, должно быть что-то, что называет столбцы, которые вы могли быкод, который в скрипте, если хотите, но я добавил его в качестве строки заголовка в CSV вместо:
$ cat file
name:surname:age:kilo
Peter:Connor:14:40kg
George:Head:56:60kg