毎日届くファイルがあり、トレーラーにはシリアル番号があります。
9999 TR SAP _AP Distribution 0000000000000001
シリアル番号はどこにあり、0000000000000001
翌日の文書0000000000000002
などは何ですか?入力ファイルのシリアル番号を確認し、シリアル番号が重複しているか、予想されるシリアル番号と一致しない場合は、ファイルを拒否する必要があります。確認を実行するにはスクリプトが必要です。
EFEGECC_Timestamp.txt
、例EFEGECC_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