첫 번째 열을 기준으로 두 파일의 공통 값을 바꾸는 방법은 무엇입니까?
파일 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 M
N 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