두 파일 간의 공통 데이터세트를 병합하는 방법

두 파일 간의 공통 데이터세트를 병합하는 방법

두 개의 데이터 세트를 병합하려고 합니다.

file1은 윤년과 비윤년을 함께 설명하는 데 사용되는 최대 366개의 숫자 율리우스력 날짜 텍스트 파일입니다.

1
2
3
4
5
6
7
8
9
10

파일 2는 연중 누락된 다양한 날이 포함된 데이터 세트입니다.

1 0.055980045
4 0.026198495
6 0.063033253
8 0.079462815

아래와 같은 파일을 만들려고 합니다. 3

1 0.055980045
2
3
4 0.026198495
5
6 0.063033253
7
8 0.079462815
9
10

많은 명령을 시도했지만 이 작업을 수행하지 못했습니다 sort. grep어떤 제안이라도

답변1

awk이 목적으로 사용할 수 있습니다 :

awk 'NR==FNR {missing[$1]=$2} NR>FNR {printf("%s %s\n",$1,missing[$1]);}' file2.txt file1.txt > file3.txt

file2.txt이 내용이 먼저 처리된 후 처리 됩니다 file1.txt.

  • 처리하는 동안 ( 각 파일의 줄 번호 file2.txt는 전역 처리의 줄 번호와 동일함) "연간 누락된 날짜" 연관을 배열로 읽습니다 .FNRNRmissing

  • 을 처리하는 동안 file1.txt배열에서 발견된 연도와 누락된 날짜 missing(또는 없으면 빈 문자열)를 인쇄합니다.

출력은 파일로 파이프됩니다 file3.txt.

답변2

awk두 번째 파일에서 데이터를 수집하고 첫 번째 파일의 값을 해시하는 데 사용할 수 있을 것 같습니다.

awk 'FNR == NR { map[$1] = $2; next } ($1 in map) { $2 = map[$1] }1' file2 file1

관련 정보