Esta pode ser uma maneira de fazer isso. Observe que o formato pode variar dependendo dos separadores de campo que você indicar - aqueles que você pode definir com FS
e OFS
:
$ awk -v n=2 '/^name/ {a=$(n); print; next} {print a, $0}' file
name NAME_A
NAME_A inf field_A1
name NAME_B
NAME_B inf field_B1
NAME_B inf field_B2
Explicação
-
-v n=2
define o número do campo para copiar quando o padrão é encontrado. -
/^name/ {a=$(n); print; next}
se a linha começar com o padrão fornecido, armazene o campo especificado e imprima a linha. -
{print a, $0}
caso contrário, imprima a linha atual com o valor armazenado primeiro.
Você pode generalizar a parte do padrão em algo como:
awk -v n=2 -v pat="name" '$1==pat {a=$(n); print; next} {print a, $0}' file