validar o número de sequência no trailer de um arquivo

1

Temos um arquivo que chega diariamente e tem um número de sequência no trailer como

9999  TR  SAP _AP Distribution  0000000000000001

em que 0000000000000001 é o número de sequência e o arquivo que vem no dia seguinte deve ter 0000000000000002 e assim por diante. Precisamos validar o número de sequência no arquivo de entrada, rejeitar o arquivo se o número de sequência for duplicado ou não corresponder ao número de sequência esperado. Precisa de um script que faça a validação.

O nome do arquivo é como EFEGECC_Timestamp.txt , por exemplo EFEGECC_20150704.txt e assim por diante. Nós temos um arquivo chegando todos os dias do ano.

    
por user86683 05.07.2015 / 03:25

1 resposta

1

Supondo que você tenha todos os arquivos a serem validados desde o início.

#!/bin/bash

seqno=1
for i; do
        if tail -1 $i | grep -q $(printf "%016d\$" $seqno); then
                echo "  valid: $i"
                seqno=$((seqno+1))
        else
                echo "invalid: $i"
        fi
done

Entrada:

$ grep . EFEGECC*
EFEGECC_20150101.txt:9999  TR  SAP _AP Distribution  0000000000000001
EFEGECC_20150102.txt:9999  TR  SAP _AP Distribution  0000000000000002
EFEGECC_20150103.txt:9999  TR  SAP _AP Distribution  0000000000000002
EFEGECC_20150104.txt:9999  TR  SAP _AP Distribution  0000000000000009
EFEGECC_20150105.txt:9999  TR  SAP _AP Distribution  0000000000000003

Saída:

$ ./script.sh EFEGECC*
  valid: EFEGECC_20150101.txt
  valid: EFEGECC_20150102.txt
invalid: EFEGECC_20150103.txt
invalid: EFEGECC_20150104.txt
  valid: EFEGECC_20150105.txt
    
por 05.07.2015 / 06:00