Se você navegar pela página less man, você perceberá que less tem um recurso INPUT PREPROCESSOR.
echo $LESSOPEN para visualizar o local desse pré-processador e usar less / vim / cat para exibir seu conteúdo.
Na minha máquina, esse pré-processador é /usr/bin/lesspipe.sh e inclui o seguinte para rpms:
*.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $?
Com efeito, less envia a abertura do arquivo para rpm e mostra a paginação de sua saída.
Obviamente, para aproveitar essa informação, simplesmente gere diretamente a saída de rpm:
grep "foo" < <(rpm -qpivl --changelog -- bar.rpm)
Ou em geral (graças ao OrangeDog)
grep "foo" < <(lesspipe.sh bar.rpm)
Observação: $LESSOPEN Não simplesmente mantém o local de lesspipe.sh - começa com | e termina com %s , portanto invocá-lo diretamente resultaria em erros. / p>