Linuxに接続されているUSBの情報をsyslogファイル(/var/log/messages)から取得しようとしています。
そのために、ログファイルを読んで情報を取得します。今私がしていることは、syslogファイルを読んで、「新しいUSBデバイスが見つかりました」の最後の発生(新しく接続されたUSB)を見つけようとすることです。その後、次の 16 行を読み取って、USB 情報 (サイズ、シリアル、メーカーなど) を取得しようとしています。
現時点では、次の構文を使用しています。
grep -A 20 -e 'New USB device found' /var/log/messages | tail -n 16 > usb_detail
しかし、この構文は 1 つのケースで失敗します。「New USB...」の後に 25 行ある場合は、最後の 16 行を取得し、必要な実際の情報をスキップします。「New USB ...」の後に 16 行しかない場合は問題なく動作し、必要な情報を取得できます。
だから私が欲しいのは、「新しいUSBデバイスが見つかりました」が最後に発生した直後に16行を取得することです。「新しい USB デバイスが見つかりました」の後の最後の 16 行ではありません。
私の質問が明確でない場合はお知らせください。お時間をいただきありがとうございます。