다음과 같은 샘플 데이터가 있습니다
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