파일이 두 개 있어요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 |
물론 각 파일에는 수천 개의 레코드가 더 있습니다. 파일로 정리해야겠어요직위번호실행 시간을 비교 분석하기 위해 두 파일이 모두 제공됩니다. (테이블 조인에서 수행할 수 있는 작업과 유사합니다.) 어떻게 해야 합니까? 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