해당 변수의 값을 읽을 때 열 이름을 인쇄하는 방법

해당 변수의 값을 읽을 때 열 이름을 인쇄하는 방법

다음과 같은 샘플 데이터가 있습니다

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 

관련 정보