첫 번째 열을 기준으로 두 파일의 공통 값을 바꿉니다.

첫 번째 열을 기준으로 두 파일의 공통 값을 바꿉니다.

첫 번째 열을 기준으로 두 파일의 공통 값을 바꾸는 방법은 무엇입니까?

파일 1(1.txt)이 있습니다.

CH063_01084
CH063_01083
CH063_13925
CH063_14473

파일 2(2.txt):

CH063_01083         FGSG_16349  4
CH063_14473         FGSG_16350  5

출력 파일은 다음과 같아야 합니다.

CH063_01084
CH063_01083          FGSG_16349 4
CH063_13925
CH063_14473          FGSG_16350 5

답변1

당신은 그것을 사용할 수 있습니다join이를 위해:

join -a 1 file1 file2

join공통 필드를 기반으로 파일을 결합합니다. 기본적으로 이는 두 파일 모두의 첫 번째 필드입니다. -a 1페어링이 없는 경우 첫 번째 파일의 행이 포함됨을 나타냅니다. 첫 번째 필드 이외의 필드를 선택하려면 -1 N -2 MN from file1및 M from 선택 필드를 사용하세요 file2.

답변2

당신은 그것을 사용할 수 있습니다 join:

$ join -a 1 file1.txt file2.txt 
A
B asas 4
C
D addd 5

파일이 정렬되지 않은 경우:

join -a 1 <(sort 1.txt) <(sort 2.txt)

그러나 이렇게 하면 형식이 손실됩니다. 당신은 그것을 사용할 수 있습니다 perl:

$ perl -anle ' $h{$F[0]} = $_;
    END { print for sort values %h }
' file1.txt file2.txt

관련 정보