두 파일을 연결하는 쉘 스크립트

두 파일을 연결하는 쉘 스크립트

나는 두 파일의 합을 구하고 shell script다음과 같은 결과를 얻는 프로그램을 작성하고 싶습니다.AB

문서 A:

user_a tel_a addr_a
user_b tel_b addr_b

문서 B:

process_1 user_a
process_2 user_a
process_3 user_b

결과:

user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b

어떻게 해야 하나요? awk아니면 다른 것입니까?

답변1

join...

join -1 2 -2 1 FileB FileA

산출

user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b

입력 파일은 키 필드별로 정렬되어야 합니다. 예제 파일은 이미 정렬되어 있으므로 필요하지 않지만 다음과 같이 정렬을 병합할 수 있습니다.

join -1 2 -2 1 <(sort -k2 FileB) <(sort FileA)

답변2

join및 는 모든 곳에서 사용할 수 없으므로 paste(예를 들어 내 BusyBox 기반 시스템에는 없음) 요청에 따라 awk를 사용하여 수행하는 방법은 다음과 같습니다.

awk 'BEGIN {
    while( (getline < "fileA") > 0) A[$1]=$2 OFS $3 # read fileA into the array A
    close("fileA")
  } {
    print $2, $1, A[$2]
  }' fileB

관련 정보