고유 ID를 기준으로 각 레코드 끝에 값을 삽입합니다.

고유 ID를 기준으로 각 레코드 끝에 값을 삽입합니다.

2개의 파일이 있는데 하나는 구분 기호가 있고 다른 하나는 위치 파일입니다.

두 파일은 아래와 같이 동일한 고유 ID를 공유하지만 두 파일에는 서로 다른 정보가 포함되어 있습니다.

del.txt

11111|abc|01|||||||||

22222|xyz|09|||||||||

pos.txt

11111  abc newyork US 

22222  xyz dallas  US

del.txt 파일은 고유한 구성원 ID, 그 뒤에 |로 구분된 이름 및 대체 ID로 구성됩니다. (구분됨) 및 유사한 pos.txt(위치 형식의 대체 ID 제외).

아래와 같이 두 파일의 고유 구성원 ID가 일치하는 경우에만 pos.txt에 대체 ID를 삽입하고 싶습니다.

pos.txt

11111  abc newyork US 01

22222  xyz  dallas US 09

쉘 스크립트를 사용하여 이를 어떻게 달성할 수 있습니까?

답변1

이 문제에 대해 가장 좋은 접근 방식은 다음을 사용하는 것입니다 awk.

$ awk -F'[ |]' 'FNR==NR{a[$1]=$3;next}($1 in a){print $0" "a[$1]}' del.txt pos.txt 
11111  abc newyork US 01

22222  xyz dallas  US 09

관련 정보