スクリプト出力をフィルタリングし、ファイルにリダイレクトしながら画面に印刷します。

スクリプト出力をフィルタリングし、ファイルにリダイレクトしながら画面に印刷します。

私はいくつかの出力メッセージを印刷し、非常に長いコマンドを呼び出して非常に長いログを生成する単純なシェルスクリプトを作成しました。次のコマンドを使用して、コマンドによって生成されたログを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にパイプされます。

おすすめ記事