验证文件尾部中的序列号

验证文件尾部中的序列号

我们有一个每天都会到达的文件,并且在预告片中有一个序列号,例如

9999  TR  SAP _AP Distribution  0000000000000001

序列号在哪里0000000000000001以及第二天的文件应该有0000000000000002等等。我们需要验证输入文件中的序列号,如果序列号重复或与预期序列号不匹配,则拒绝该文件。需要一个执行验证的脚本。

文件名如EFEGECC_Timestamp.txt、egEFEGECC_20150704.txt等。一年中的每一天我们都会收到一份文件。

答案1

假设您从一开始就需要验证所有文件。

#!/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

输入:

$ 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

输出:

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

相关内容