J'ai des problèmes avec le filtrage grep de la sortie de make. En particulier,
make target 2>&1 | grep -E --color=never "^make.*"
fonctionne comme prévu, mais ce qui suit n'affiche aucune donnée dans la console :
make target 2>&1 | grep -E --color=never "^make.*" | cat
Ai-je raté quelque chose d'évident ? Pourquoi la première commande sort-elle mais pas la seconde ? S'agit-il d'une sorte de mise en mémoire tampon des entrées-sorties ? Ou suis-je simplement stupide ?
[EDIT] : cat
n'est qu'un exemple de test minimum pour la commande réelle que je veux utiliser.
[EDIT] : Cela ne semble pas être un problème avec grep, car en le remplaçant par ack entraîne le même comportement.
[EDIT] : script que le chat remplace :
#!/bin/bash
cat - \
| grep -E --color=never "^.*warning:.*|^.*error:.*|^make.*[Ee]rror.*|^make.*" \
| hilite.sh -r "^.*warning:.*" -f yellow -B \
| hilite.sh -r "^.*error:.*" -f red -B \
| hilite.sh -r "^make.*[Ee]rror.*" -f red -B \
| hilite.sh -r "^make.*" -f magenta
[EDIT] : Je pense qu'il s'agit d'un problème de mémoire tampon/IO. Je laisse le build tourner pendant le w/e et je verrai s'il finit par obtenir la sortie là où il le faut !