Join 명령이 예상대로 작동하지 않습니다.

Join 명령이 예상대로 작동하지 않습니다.

줄은 다르지만 공통 요소는 하나인 두 파일을 연결하려고 합니다.

파일 1:

1/temperature
2/rainfall
3/snowfall
4/windspeed
5/winddirection

파일 2:

2008-10-01/1/68
2008-10-02/2/6
2008-10-03/3/4
2008-10-04/4/25
2008-10-05/5/120
2008-10-01/1/89
2008-10-01/4/35
2008-11-01/5/360
2008-10-01/1/45
2008-12-01/1/61
2008-10-10/1/32

다음 명령을 사용하여 두 파일을 결합하려고 합니다.

join -t/ -1 1 -2 2 FILE1 FILE2

다음과 같은 결과가 나올 것으로 예상됩니다.

1/temperature/2008-10-01/68
1/temperature/2008-10-01/89
1/temperature/2008-10-01/45
1/temperature/2008-12-01/61
1/temperature/2008-10-10/32
2/rainfall/2008-10-02/6
3/snowfall/2008-10-03/4
4/windspeed/2008-10-04/25
4/windspeed/2008-10-01/35
5/winddirection/2008-10-05/120
5/winddirection/2008-11-01/360

하지만 처음 5줄은 다음과 같습니다.

1/temperature/2008-10-01/68
2/rainfall/2008-10-02/6
3/snowfall/2008-10-03/4
4/windspeed/2008-10-04/25
5/winddirection/2008-10-05/120

도와주세요 제가 뭘 잘못하고 있는 걸까요

답변1

join입력이 정렬될 것으로 예상합니다(결합할 필드에서). 이 예에서는(bash 쉘의 프로세스 대체 활용):

$ join -t/ -1 1 -2 2 FILE1 <(sort -t/ -k2 FILE2)
1/temperature/2008-10-10/32
1/temperature/2008-10-01/45
1/temperature/2008-12-01/61
1/temperature/2008-10-01/68
1/temperature/2008-10-01/89
2/rainfall/2008-10-02/6
3/snowfall/2008-10-03/4
4/windspeed/2008-10-04/25
4/windspeed/2008-10-01/35
5/winddirection/2008-10-05/120
5/winddirection/2008-11-01/360

필수 주문은 다음과 같습니다.어휘숫자 대신 - 첫 번째 열에 FILE19개 이상의 값이 있는 경우 사전 정렬이 필요할 수도 있습니다.

관련 정보