我有以下示例数据
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