Réponses:
La grepcommande accepte une --color=alwaysoption, vous pouvez donc utiliser
grep 'keyword1' file.log --color=always | grep 'keyword2'
Comme le souligne gertvdijk , cette commande peut être inefficace, mais elle recherchera toutes les lignes qui contiennent à la fois mot-clé1 et mot-clé2. Si vous souhaitez les surligner de différentes couleurs, vous pouvez utiliser
grep 'keyword1' file.log --color=always | GREP_COLORS="mt=01;34" grep --color=always 'keyword2'
qui mettra en évidence le mot-clé2 en bleu. La mtpartie signifie que grepmettra en évidence le texte correspondant en utilisant ce code CSI , et 01;34signifie "un premier plan bleu gras sur un fond normal".
grep -R --color=always keyword1 . | grep keyword2devrait marcher. Vous allez être redirigé la sortie à nouveau (comme en canalisant le second grepen less -R)? Si c'est le cas, vous devrez également ajouter --color=alwaysau second.
                    --color=autoserait nécessaire pour le second grep, juste après 'keyword2'.
                    --color=alwaysà la réponse, parce que vous voudrez peut-être la diriger lessou quelque chose aussi.
                    Essayez des expressions régulières réelles, plutôt que de diriger vers une autre instance de grep, par exemple:
grep -E "\<foo\>.*\<bar\>" file
Cela se limite malheureusement aux lignes correspondantes dans lesquelles les mots-clés correspondent dans cet ordre. Quoi qu'il en soit, l'utilisation de grepdans votre question est plutôt inefficace et vous devez l'éviter. La réponse de @DanielH est probablement beaucoup plus simple pour votre cas, probablement.
Pour une correspondance «ou» de mots clés, j'utilise ceci régulièrement:
grep -E "(foo|bar)" file
              foo.*bar|bar.*foo, ou si cela est même nécessaire pour ce cas (qui semble être un fichier journal qui aurait probablement un ordre standard pour les mots clés). J'ai ajouté ma réponse avant de mettre à jour la vôtre, mais je la garderai au cas où il y aurait une situation où les chaînes grepsont vraiment nécessaires (ou toute autre sortie colorée ne devrait pas être envoyée au terminal, par exemple grep | less -R).