我们有一个每天都会到达的文件,并且在预告片中有一个序列号,例如
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