短い形式:これを行うことはできますが、事前に行う必要があることを知っておく必要があります。事後にインタラクティブに配置できるものではありません。
文字列が何であるかを判断するためのスクリプトを作成します。より良い使用例を示すために、出力形式のより詳細な例が必要ですが、最初の行全体がフィルターターゲットであるという些細な場合の例を次に示します。
run_my_command | { read string_to_filter_for; fgrep -e "$string_to_filter_for" }
を必要な数のコマンドに置き換えてread string_to_filter_for
、ターゲット文字列が何であるかを判断するのに十分な入力を読み取ります。これは、必要に応じてループになる可能性があります。
たとえば、出力に次のものが含まれているとします。
Session id: foobar
その後、を含む行をgrepしますfoobar
。
...次に、次のスクリプトをパイプ処理できます。
re='Session id: (.*)'
while read; do
if [[ $REPLY =~ $re ]] ; then
target=${BASH_REMATCH[1]}
break
else
# if you want to print the preamble; leave this out otherwise
printf '%s\n' "$REPLY"
fi
done
[[ $target ]] && grep -F -e "$target"
フィルタターゲットを手動で指定する場合は、フィルタの内容を使用して作成されているファイルをループチェックし、後でgrepを起動するときにそれを使用することで実行できます。