ログファイルを読み取るLinuxシェルスクリプトを作成したいと思います。
例えば。次の行を含むログファイルがあります。
Job: One(106) started.
Job: Two(107) started.
Job: Name(111) started.
Job: EXE(112) started.
Job: SMTG(117) started.
...........
.....
...
すべてのジョブを確認し、ジョブのステータスが開始されていない場合は、電子メールを送信するスクリプトを作成したいと思います。ジョブの状態は、エラー、ロック、停止などです。状態が開始されていないことを正確に確認するスクリプトを書く方法がわかりません。
答え1
awk '$0!~/started/{print}' logfile | mail -s "Jobs not started" [email protected]
答え2
grep -v 'Job:.*started.' yourfile.log | while read line; do
# your not started line is here
echo $line
done
簡単な説明:
grep
ファイルを読み取り、パターンに一致する行をフィルタリングするため、開始された操作と一致しません。その後、echo $line
電子メールを交換して送信できる開始されていない行を読んでいます。