특정 열의 값을 기준으로 동일한 형식의 두 파일을 결합합니다.

특정 열의 값을 기준으로 동일한 형식의 두 파일을 결합합니다.

파일이 두 개 있어요stat_1.txt&stat_2.txt. 다음과 같이:

직업ID | 실행 시간

------+---------

12345 | 00:04:42.454282

12346 | 00:03:26.360487

=====================

직업ID | 실행 시간

------+---------

12347 | 00:01:43.634521

12345 | 00:02:34.321451

물론 각 파일에는 수천 개의 추가 레코드가 있습니다. 하나의 파일로 정리해야 하는데직업_ID실행 시간을 비교 분석하기 위해 두 파일 모두에 존재합니다. (테이블 조인에서 수행할 수 있는 작업과 유사합니다.) 어떻게 해야 합니까? Bash에는 우아한 방법이 있어야 한다고 확신합니다.

파일은 다음과 같습니다주문하지 않음job_id 기준. 한 파일에만 존재하고 다른 파일에는 존재하지 않는 일부 job_id가 있습니다. (위의 표가 엉성해 보이셨다면 죄송합니다. 서식이 익숙하지 않아서 좀 급했습니다.)

답변1

그렇게 해도 돼

awk 'NR==FNR{a[$1$2]=$3;next}
{k=$1$2;print k,a[k],$3;delete a[k]}
END{for(k in a)print k,a[k]}' test1 test2

test1과 test2는 결합할 두 파일입니다.

예는 다음과 같습니다.

[xxxx@xxxx test]$ awk 'NR==FNR{a[$1$2]=$3;next}
                  {k=$1$2;print k,a[k],$3;delete a[k]}
                  END{for(k in a)print k,a[k]}' test1 test2

job_id | execution_time execution_time
--------+--------------------
12347 |  00:01:43.634521
12345 | 00:04:42.454282 00:02:34.321451
12346 | 00:03:26.360487

관련 정보