첫 번째 열에 따라 두 파일의 공통 값을 바꿉니다.

첫 번째 열에 따라 두 파일의 공통 값을 바꿉니다.

첫 번째 열에 따라 두 파일의 공통 값을 어떻게 바꾸나요?

파일 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에서 필드를 선택 file1하고 M에서 필드를 선택합니다 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

관련 정보