$ awk -F'|' '
BEGIN {
getline; split($0,a); OFS=FS;
print "EMP_ID", "EMP_NAME", "Values", "HeaderName"
}
{
for (i=3;i<=NF;i++) print $1, $2, $i, a[i];
}
' sample
EMP_ID|EMP_NAME|Values|HeaderName
123456|XXXXXXXXX|30|AGE
123456|XXXXXXXXX|10000000|SALARAy
123456|XXXXXXXXX|1234|DepId
123456|XXXXXXXXX|XYZWE|DepName
Если вы хотите, чтобы диапазон выходных полей совпадал с количеством полей заголовка, измените split($0,a)
на n = split($0,a)
, а затем измените условие завершения цикла for
на i<=n
вместо i<=NF
. ]. Или измените его на фиксированный номер, если это то, что вы хотите.