Você pode usar o awk para isso. Basta definir um sinalizador por correspondência que você está procurando e, em seguida, verificar se todas as sinalizações foram definidas.
Eu sei que grep -E 'termA|termB' files
me permite pesquisar vários arquivos para termA OR termB
. O que eu gostaria de fazer é pesquisar por termA AND termB
. Eles não precisam estar na mesma linha, contanto que os dois termos existam no mesmo arquivo. Essencialmente, um recurso "pesquisar dentro do resultado".
Eu sei que posso canalizar os resultados de um grep para outro, mas isso parece lento ao passar por muitos arquivos.
grep -l "termA" * | xargs grep -l "termB" | xargs grep -E -H -n --color "termA|termB"
Espero que o acima não seja a única maneira de fazer isso.
Seria muito bom se isso funcionasse no Windows (tenha o cygwin) e no Linux. Não me importo de instalar uma ferramenta para executar esta tarefa.