変更できないOSX GUIアプリケーションがあります。操作が完了したら、ログファイルに新しいCVS行を記録します。この新しい行を使用したいのですが、追加され続けています。
アプリケーションの出力をスクリプトに直接リダイレクトして、スクリプトによって生成された新しい行を処理する方法はありますか?変更をインポートするためにX秒ごとにファイルを読むことはお勧めできません。ただし、ファイルの変更を検出してそのように処理するために使用できますが、launchd
よりエレガントなものを探しています。どんなアイデア(例を含む - 学んでいるのか)なら大変感謝します。
編集する
これが最善のアプローチであるかどうかはわかりませんが、tailの-Fフラグを使用してすぐに結果を得ることができました。最後の行をフィルタリングできますが、最初に実行したときにファイルが更新されると(必要に応じて)、最後の行だけでなくすべての行が出力されます。
tail -F -n 2 '/path/to/Epson4880_audit.txt' | grep "."
ベストアンサー1
出力ファイルをFIFOに置き換えて、他のプログラムにこのファイルから入力を受け取ることができます。
たとえば、
mkfifo Epson4880_audit.txt
# launch your program
grep "." Epson4880_audit.txt
これは動作が保証されないことに注意してください。一部のプログラムは、出力が実際のファイルであることを確認します。行ログを実際に維持するには、2番目のプロセスで行が到着したときに印刷されるようにする必要があります。例:dotee real_Epson4880_audit.txt | grep "."
また、最初のプロセスがリーダーを待つ必要があるため、2番目のプログラムがなければ、1番目のプログラムを開始できません。最初のプログラムを実行し、2番目のプログラムを実行したくない場合は、まずFIFOを削除する必要があります。