두 개의 파일이 있습니다. 첫 번째 파일의 형식은 다음과 같습니다.
10D0325 2465 0 0 -9 -9
10D0598 2567 0 0 -9 -9
10D0562 2673 0 0 -9 -9
10D0175 2457 0 0 -9 -9
10D0241 2209 0 0 -9 -9
10D0954 2312 0 0 -9 -9
10D0446 2489 0 0 -9 -9
두 번째 파일의 형식은 다음과 같습니다.
10D0325 1
10D0598 1
10D0175 2
10D0954 1
10D0446 2
내가 원하는 것은 ID 변수를 기반으로 두 번째 파일의 두 번째 열을 첫 번째 파일에 추가하는 것입니다. 보시다시피, 첫 번째 열은 첫 번째 데이터 세트를 두 번째 데이터 세트와 일치시키는 식별자 변수로 사용될 수 있습니다. 그러나 첫 번째 파일에는 두 번째 파일에 없는 일부 행/ID가 포함되어 있습니다. 따라서 단순히 두 파일을 모두 주문하고 이 열을 첫 번째 파일에 붙여넣을 수는 없습니다.
이를 수행하는 매우 쉬운 방법이 있을 것입니다. 불행히도 제 Linux 기술은 제한되어 있습니다.
PS 명확성을 위해 생성된 파일의 모양은 다음과 같습니다(공백 대신 누락을 나타내는 데 다른 기호를 사용할 수 있음).
10D0325 2465 0 0 -9 -9 1
10D0598 2567 0 0 -9 -9 1
10D0562 2673 0 0 -9 -9
10D0175 2457 0 0 -9 -9 2
10D0241 2209 0 0 -9 -9
10D0954 2312 0 0 -9 -9 1
10D0446 2489 0 0 -9 -9 2
답변1
사용 join
:
join -j 1 -a 1 <(sort file1) <(sort file2)
-j 1
: 연결 필드가 첫 번째입니다.-a 1
: 파일 1에서 페어링할 수 없는 줄을 인쇄합니다.sort
:파일을 추가하려면 먼저 정렬해야 합니다.
답변2
그것은 간단합니다 awk
:
awk 'NR==FNR{a[$1]=$2;next}{print $0,a[$1]}' file2 file1
a
먼저(file2를 읽을 때) 첫 번째 열로 인덱싱된 file2의 두 번째 열을 저장하기 위한 배열을 만듭니다 . 그런 다음 file1을 인쇄하고 배열에 값을 추가합니다.