공백으로 구분된 세 개의 열이 있는 기본 데이터베이스처럼 작동하는 짧은 파일(약 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