awk를 사용하여 열을 행으로 바꾸고 데이터의 첫 번째 열을 반복합니다.

awk를 사용하여 열을 행으로 바꾸고 데이터의 첫 번째 열을 반복합니다.

test.txt에 입력한 내용은 다음과 같습니다.

month,var1,var2
June,10,a
Sep,20,b
Dec,30,c

내가 원하는 출력은

month,variable,value
June,var1,10
June,var2,a
Sep,var1,20
Sep,var2,b
Dec,var1,30
Dec,var2,c

두 번째 열부터 시작하는 열 수는 동적입니다. 2개의 열 또는 100개의 열을 가질 수 있습니다. awk를 사용하여 데이터를 어떻게 전치할 수 있나요?

답변1

노력하다

$ awk -F, '
    BEGIN{OFS=FS} 
    NR==1{n = split($0,a); print "month,variable,value"; next}
    {for(i=2;i<4;i++) print $1,a[i],$i}
' file
month,variable,value
June,var1,10
June,var2,a
Sep,var1,20
Sep,var2,b
Dec,var1,30
Dec,var2,c

(이것은 전치라기보다는 폭발에 가깝습니다.)

답변2

awk -F, '
    BEGIN{OFS=FS} 
    NR==1{n = split($0,a); print "month,variable,value"; next}
    {for(i=2;i<NF;i++) if (a[i] !=""){ print $1,a[i],$i} }
' file

관련 정보