수정되지 않은 행을 남겨두고 파일의 삽입 및 수정 사항을 패치하려면 어떻게 해야 합니까?

수정되지 않은 행을 남겨두고 파일의 삽입 및 수정 사항을 패치하려면 어떻게 해야 합니까?

공백으로 구분된 세 개의 열이 있는 기본 데이터베이스처럼 작동하는 짧은 파일(약 60줄)이 있습니다. 첫 번째는 제품명, 두 번째는 가격, 세 번째는 수량입니다.

product1 5 25
product2 8 30
product3 15 80
product4 2 200

그런 다음 동일한 형식을 일부 수정하여 새 파일을 만듭니다.

product1 5 45
product3 18 80
product5 5 25

나중에 이 두 파일을 하나로 병합하고 싶습니다. 다음과 같아야 합니다.

product1 5 45
product2 8 30
product3 18 80
product4 2 200
product5 5 25

diff와 patch를 사용해 보았지만 업데이트 파일에 없는 줄이 제거되었습니다. 이 문제를 어떻게 해결해야 합니까?

답변1

소스 파일이 data있고 업데이트 파일이 있다고 가정하면 updates이 짧은 코드가 요구 사항을 충족합니다.

awk '{ h[$1] = $0 } END { for (i in h) { print h[i] } }' data updates

awk코드는 다음과 같은 섹션으로 구분됩니다.

{ h[$1] = $0 }                         # save each line, keyed by first element, overwriting as necessary
END { for (i in h) { print h[i] } }    # when we have read everything, print each element in the array

관련 정보