2개의 파일을 파일 1의 데이터 하위 집합을 포함하는 두 번째 파일과 비교합니다.

2개의 파일을 파일 1의 데이터 하위 집합을 포함하는 두 번째 파일과 비교합니다.

테스트 번호, 테스트 이름, 시드 값, 상태(통과 또는 실패) 및 테스트 유형(mcu 또는 bfm)이 포함된 2개의 파일이 있습니다. 내가 관심 있는 열은 테스트 이름과 상태뿐입니다. 전체 테스트의 하위 집합인 일부 테스트를 실행하고 위 형식의 로그 파일을 생성했으며 tkdiff파일이 동일하지 않기 때문에 테스트 상태가 변경되었는지 비교하고 싶었습니다 . 테스트 하위 집합과 기본 테스트 파일 간에 차이점이 있는지 비교하려면 어떻게 해야 합니까? 400개 이상의 테스트가 없다면 저는 손으로 할 것입니다.

예:

하위 집합 테스트

|---------|------------------------------------------------------------------------------|-------|-----------|------------|
|Sr.Num   |test_name                                                                     |seed   |Status     |XDATA MASTER|
|---------|------------------------------------------------------------------------------|-------|-----------|------------|
|        1|                                                     usb3_bootrom_flex_connect|      1|     PASSED|         MCU|
|        2|                                                       usb3_XTAL_25MHZ_bootrom|      1|     PASSED|         MCU|

모든 테스트 파일

|---------|------------------------------------------------------------------------------|-------|-----------|------------|
|Sr.Num   |test_name                                                                     |seed   |Status     |XDATA MASTER|
|---------|------------------------------------------------------------------------------|-------|-----------|------------|
|       50|                                                     usb3_bootrom_flex_connect|      1|     FAILED|         MCU|
|      200|                                                       usb3_XTAL_25MHZ_bootrom|      1|     FAILED|         MCU|

결과물 파일:

usb3_bootrom_flex_connect New: PASSED Old: FAILED usb3_XTAL_25MHZ_bootrom New: PASSED Old: FAILED

테스트 하위 집합:https://pastebin.com/9rWAupaJ

모든 테스트:https://pastebin.com/cVpzY8C8

하위 집합 테스트의 상태가 변경되었는지 확인하고 싶습니다. 내가 어떻게 하느냐는 중요하지 않습니다. tkdiff로 이것을 할 수 있다면 그렇게 할 것입니다.

답변1

아마도 cutting과 ping을 많이 사용 grep하여 무언가를 할 수 있지만 tkdiff단일 sed스크립트를 사용하여 작업을 수행할 수 있습니다.

sed -n -e '3{:a' -e 'n;s/.* \([^|]*\)| *[0-9]*| *\([A-Z]*\).*/\1 \2/;H;ta}
  G;s/^|[^|]*| *\([^|]*\)| *[0-9]*| *\([A-Z]*\).*\1 \([A-Z]*\).*/\1  New: \2  Old: \3/p' tests.new tests.old

첫 번째 줄은 예약된 공간에 새 테스트 결과를 수집하고, 두 번째 줄은 이전 테스트에 대한 행을 검색하고, 테스트 이름을 예약된 공간에 있는 이름과 비교하고, 일치하는 줄을 인쇄합니다.

이 원리에 대한 자세한 설명은 다음을 참조하세요.이 답변.

더 큰 새 테스트 파일의 경우 역참조가 포함된 정규식으로 인해 이 스크립트가 느려질 수 있습니다.

관련 정보