回答:
lessマニュアルページを参照すると、lessINPUT PREPROCESSOR機能があります。
echo $LESSOPENこのプリプロセッサの場所を表示するには、less/ vim/ catを使用してその内容を表示します。
私のマシンでは/usr/bin/lesspipe.sh、このプリプロセッサはrpmの次のものを含んでいます。
*.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $?
実際にはless、ファイルをrpmに開いて、出力のページネーションを表示します。
明らかに、この情報をgrepするには、rpmの出力を直接grepするだけです。
grep "foo" < <(rpm -qpivl --changelog -- bar.rpm)
または一般的に(OrangeDogに感謝)
grep "foo" < <(lesspipe.sh bar.rpm)
注: $LESSOPENの位置を保持するだけではありません-a lesspipe.shで始まりa |で終わる%sため、直接呼び出すとエラーになります。
grep "foo" < <($LESSOPEN bar.rpm)?または多分ちょうど$LESSOPEN bar.rpm | grep "foo"。