다른 파일의 다른 열 값을 사용하여 한 열의 값을 변경하는 방법

다른 파일의 다른 열 값을 사용하여 한 열의 값을 변경하는 방법

유닉스에서 어떤 명령을 사용해야할지 모르겠습니다.

다음과 같은 파일이 있다고 가정해 보겠습니다.

A  23
B  52
C  36
F  25

두 번째 파일에는 3개의 열이 있습니다.

A  aligator  2
B  panda  3
C  bear  4
D  pig  1
E  yeti  0
F  shark  9
G  dog  10
H  cat  1

이제 첫 번째 열의 값이 파일 간에 일치하면 첫 번째 열 값(1개 파일)을 두 번째 열 값(2개 파일)으로 바꾸고 싶습니다.

출력 예:

aligator  23
panda  52
bear  36
shark  25

누가 날 도울 수 있죠?

최고.

답변1

파일이 정렬되면 joincoreutils를 사용할 수 있습니다.

join -o '2.2 1.2' file1 file2

산출:

aligator 23
panda 52
bear 36
shark 25

답변2

awk작업을 위한 훌륭한 도구는 다음과 같습니다.

awk 'NR==FNR{a[$1]=$2;next}a[$1]{print $2,a[$1]}' file1 file2

첫 번째 파일을 읽으면( FN==FNR) a배열은 두 번째 열의 값으로 채워지고 첫 번째 열부터 인덱싱됩니다. 그런 다음 두 번째 파일이 처리되면 file1의 두 번째 열과 두 번째 열을 인쇄합니다.

산출:

aligator 23
panda 52
bear 36
shark 25

관련 정보