두 개의 데이터 세트를 병합하려고 합니다.
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
는 전역 처리의 줄 번호와 동일함) "연간 누락된 날짜" 연관을 배열로 읽습니다 .FNR
NR
missing
을 처리하는 동안
file1.txt
배열에서 발견된 연도와 누락된 날짜missing
(또는 없으면 빈 문자열)를 인쇄합니다.
출력은 파일로 파이프됩니다 file3.txt
.
답변2
awk
두 번째 파일에서 데이터를 수집하고 첫 번째 파일의 값을 해시하는 데 사용할 수 있을 것 같습니다.
awk 'FNR == NR { map[$1] = $2; next } ($1 in map) { $2 = map[$1] }1' file2 file1