Answers:
如果浏览less手册页,您会发现less它具有INPUT 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不能简单地保留-的位置lesspipe.sh-它以a开头,以a |结尾,%s因此直接调用它会导致错误。
grep "foo" < <($LESSOPEN bar.rpm)呢?甚至只是$LESSOPEN bar.rpm | grep "foo"。