두 파일의 동일한 매개변수 값 병합

두 파일의 동일한 매개변수 값 병합

두 개의 파일이 있습니다 primary.txt.secondery.txt

두 파일 모두 동일한 매개변수를 가지고 있지만 secondary.txt순서가 다릅니다 .primary.txt

more primary.txt

param.avarge.com 3443
param.no.com 43
param.lol.com 54
param.tis.com 24
param.er.com 254
param.nh.com 13
param.pl.com 456
param.nm.com 534
param.asd.com 236

more secondery.txt

param.no.com 42
param.lol.com 51
param.tis.com 21
param.avarge.com 343
param.er.com 259
param.nh.com 131
param.pl.com 45
param.nm.com 50
param.asd.com 23

secondery.txt우리는 이 값들을 다음과 병합하고 싶습니다 primary.txt:

more merge.txt

param.avarge.com 3443 343
param.no.com 43 42
param.lol.com 54 51
param.tis.com 24 21
param.er.com 254 259
param.nh.com 13 131
param.pl.com 456 45
param.nm.com 534 50
param.asd.com 236 23

이에 대한 제안을 받으면 감사하겠습니다. 따라서 bash 스크립트에서 솔루션을 업데이트하겠습니다.

답변1

이게 다 기억에 맞다면

 awk 'NR==FNR { s[$1]=$2 ; next }
      { print $0,s[$1] }' secondary.txt primary.txt

NR==FNR은 첫 번째 파일이 처리되고 있는지 여부를 알려주는 트릭입니다(첫 번째 파일이 비어 있지 않다고 가정). 첫 번째 파일이라면 두 번째 열의 값을 연관배열에 저장하고 다음 행으로 이동합니다. 계속하지 않으면 두 번째 파일을 처리해야 하므로 메인 파일의 값과 저장된 값을 출력합니다.

관련 정보