内容と比較するには、以下のようにIは4であり、実際のレコードラインを比較する必要がカウント合計ファイル内のレコードとトレーラレコードファイルの
101,abc,2017-03-15,Linux
222,xyz,2016-10-10,Unix
987,def,2017-01-03,Solaris
567,tek,2014-01-09,windows
Trailer|20170331|4
あるトレーラー(4)上の合計レコードに等しいです。
内容と比較するには、以下のようにIは4であり、実際のレコードラインを比較する必要がカウント合計ファイル内のレコードとトレーラレコードファイルの
101,abc,2017-03-15,Linux
222,xyz,2016-10-10,Unix
987,def,2017-01-03,Solaris
567,tek,2014-01-09,windows
Trailer|20170331|4
あるトレーラー(4)上の合計レコードに等しいです。
私は仮定のカップル作りました:
あなたが使用している特定のOSやシェルを指定していないため、軽微な違いのためにいくつかのコマンドを調整する必要があるかもしれません。とにかく
は、ここに私が思い付いたものです:
recchk()
{
#Here's the file we're working with:
myfile=testfile.txt
#Let's figure out how many records are in it
recs=`wc -l $myfile | cut -f1 -d" "`
#Now subtract 1 because we don't want to count the trailer
let recs=`expr $recs - 1`
echo "There are $recs data records in the file."
#Now we'll find the trailer record and get the third field
trcnt=`tail -1 $myfile | cut -f3 -d"|"`
echo "Trailer says there are $trcnt records."
#Now we'll check to make sure all is well.
if [ $recs -ne $trcnt ]; then
echo "Uh-oh! They don't match\!"
else
echo "Right on, daddy-o\! We're righteous\!"
fi
}
は、この情報がお役に立てば幸い!
Rogerさん、ありがとうございました。上記の情報をもう1つ必要です。関数recchk()のパラメータとしてファイル名を渡すことができます。これを複数のスクリプトにわたって使用することができます。 –
recchk()関数をrecchk.shのような別のファイルに置くと、 'source
私は5つのテキストファイルがあり、各ファイルのために、私はレコードの合計数をチェックし、トレーラーのレコードと比較し、それが一致するかどうかを確認する必要があります。明らかに5つのファイルは異なる名前を持ち、recchk()関数でファイル名を渡して再利用したいのですが、どのようにファイル名を呼び出すことができますか? –
問題を自分で解決しようとしましたか? – Inian
あなたはどのように出力を得たいですか? – Inian