첫 번째 열을 기준으로 여러 열을 두 개의 열로 분할하는 방법

첫 번째 열을 기준으로 여러 열을 두 개의 열로 분할하는 방법

아래와 같이 탭으로 구분된 열 텍스트가 있습니다.

A    1   12  13
B    3   4   5 
C    6   17   8
D    19   10  11

위의 표를 아래와 같이 변환하려면 어떻게 해야 합니까?

A    1
A    12
A    13
B    3
B    4
B    5
C    6
C    17
.
.
.

답변1

awk를 사용하세요:

$ awk '{for (i=2;i<=NF;i++) print $1,$i}' file
A 1
A 12
A 13
B 3
B 4
B 5
C 6
C 17
C 8
D 19
D 10
D 11

출력을 탭으로 구분하려면 다음 OFS변수를 사용할 수 있습니다.

$ awk -v OFS='\t' '{for (i=2;i<=NF;i++) print $1,$i}' file
A   1
A   12
A   13
B   3
B   4
B   5
C   6
C   17
C   8
D   19
D   10
D   11

관련 정보