私はいくつかの出力メッセージを印刷し、非常に長いコマンドを呼び出して非常に長いログを生成する単純なシェルスクリプトを作成しました。次のコマンドを使用して、コマンドによって生成されたログをjobLog.logというファイルにリダイレクトしました。これ答え。だから私のコードは次のようになります
#!/bin/bash
echo "Submiting a job to ...."
sudo command_with_huge_output > jobLog.log 2>&1 && echo "Job ended! Log at jobLog.log"
このログの行を画面にリダイレクトしたいです。作業が終わったら、次のようにファイルをgrepします。
less jobLog.log | grep LineIwanttoFind
これにより、コマンドの実行時に印刷したい行が返されます。コマンドの実行中に目的の行をフィルタリングして画面からリダイレクトするにはどうすればよいですか?もちろん、jobLog.logファイルの完全なログも送信したいと思います。
どんな提案でも送ってくれてありがとう
ベストアンサー1
次のようにティーを使用してください。command_with_huge_output | tee jobLog.log | grep 'LineYouWantToFind'
したがって、command_with_huge_outputのすべての標準出力はjobLog.logとgrepにパイプされます。