Comparando 2 arquivos com o segundo arquivo contendo subconjunto de dados do arquivo 1

1

Eu tenho 2 arquivos contendo o número do teste, nome do teste, valor inicial, status (aprovado ou reprovado) e um tipo de teste (mcu ou bfm). As duas únicas colunas em que estou focado são os nomes e status dos testes. Executei alguns testes que são um subconjunto dos meus testes totais e gerou um arquivo de log com o formato acima e queria fazer um diff para ver se o status dos testes foi alterado; um tkdiff não funcionará, pois os arquivos não são os mesmos. Como posso fazer uma comparação para ver se o diff do meu subconjunto de testes contra o arquivo de teste principal? Eu faria isso manualmente, exceto que há mais de 400 testes.

Exemplo:

Testes de subconjunto

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

Todo o arquivo de testes

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

Arquivo de saída:

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

Teste do subconjunto: link

Todos os testes: link

Eu só quero ver se os testes de subconjunto mudaram de status. Não importa como eu faço isso realmente. Se eu pudesse fazer isso com um tkdiff eu faria.

    
por Javia1492 10.07.2017 / 16:17

1 resposta

2

Talvez você possa fazer algo com muito cut ting e grep ping e tkdiff , mas você pode usar um único script sed para fazer o trabalho:

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

A primeira linha coleta os novos resultados do teste no espaço de espera, a segunda linha varre as linhas dos testes antigos, compara o nome do teste com os do espaço de espera e imprime uma linha para uma correspondência.

Para obter uma explicação detalhada desse princípio, consulte esta resposta .

Por favor, note que para arquivos maiores de novos testes este script pode ficar lento por causa da expressão regular com referência de volta.

    
por 11.07.2017 / 07:54