ヘッダーとトレーラーの検証

ヘッダーとトレーラーの検証

私はUNIXに初めてアクセスし、headそれについての助けと検証が必要ですtaildata.txt次のデータを含むテキストファイルがあります。

H,20200701
SK
MK
3

ここでタイトルには日付が含まれ、トレーラーにはファイル内の行数が含まれます。

ヘッダーに現在の日付があることを確認し、トレーラーに正しいレコード数があることを確認するシェルスクリプトを作成する必要があります。

ベストアンサー1

私の仮定によると、これはあなたが望むものですか?

awk -F"," -v dt=$(date +'%Y%m%d') 'FNR==1{ dte=$2; } { l=$0;} 
END { if ( dte==dt && (FNR-1)==l ) print "Yes"; else print "No" } ' data.txt

編集する:

-F"," => フィールド区切り文字を "," カンマに設定します。

-v dt=$(date +'%Y%m%d')=> unixコマンドを実行して、ファイルに記載されている形式で現在の日付を取得し、「dt」変数に保存します。

NR==1{ dte=$2; } =>行番号が1の場合、ファイルに2番目のフィールド(日付)を保存します。

{ l=$0;} => 各行を「l」という変数に保存します。 (この方法で最後の行が出ると、ファイルの最後の行を「l」に保存します。)

END { if ( dte==dt && (NR-1)==l )=> ENDブロックで(すべての行を解析した後、変数「dte」が「dt」(前の行のdateコマンドの出力とファイルの日付値)と等しいことを確認し、最後の行が「l」であるレコードの総数(NR )から1を引いたものと一致します。両方が一致した場合はyes else Noを印刷します。

おすすめ記事