如何在读取该变量的值时打印列名

如何在读取该变量的值时打印列名

我有以下示例数据

EMP_ID|EMP_NAME|AGE|SALARAy
123456|XXXXXXXXX|30|10000000

有没有办法可以将记录拆分为多个记录并获取标题。示例输出应类似于

EMP_ID|Values|HeaderName
123456|XXXXXXX|EMP_NAME
123456|30|AGE
123456|10000000|SALARY

我尝试使用以下命令

awk -F\| 'NR>1{for(i=2;i<=NF;i++){print $1"|"$(i)}}' records.txt 

在这里,我无法获取标头名称,只能获取 EMP_ID 和值。

答案1

获取标头并将其保存在数组中:

 NR==1 { for (i=1;i<=NF;i++) h[i]=$i }

然后你可以简单地使用添加它们h[i]

awk -F\| '
    BEGIN { print "EMP_ID|Values|HeaderName" }
    NR==1 { for(i=2;i<=NF;i++) h[i]=$i }
    NR>1 { for(i=2;i<=NF;i++) print $1"|"$i"|"h[i] }
' records.txt 

相关内容