Grepping stdin et de la tuyauterie pour le sed ne semble pas fonctionner

Je suis en train de filtre et de le remplacer une norme d'entrée dans le but de capturer uniquement des chaînes de caractères spécifiques tordu vers mon goût. Par exemple, dire que le standard de la chaîne d'entrée est

"KB: the system ran into a critical error" 

Alors je vais grep cette ligne, changement", KB:""###", puis la sortie vers STDOUT tels que

"### the system ran into a critical error"

J'ai essayé dans Fedora 12 (et en fait dans de nombreux autres)

$ grep "KB:" - | sed -e 's/KB:/###/g'
KB: the system ran into a critical error <--- This is what I typed in manually.
                                         <--- Nothing is printed

J'ai créé un fichier texte, text.txt que contient le même exemple de chaîne, puis avait grep lire à partir du fichier comme:

$ grep "KB:" text.txt | sed -e 's/KB:/###/g'
### the system ran into a critical error <--- Correctly displayed
$

Quelle serait la différence observée à partir de l'intérieur de grep/sed et pourquoi le STDIN méthode ne fonctionne pas? Plutôt que d'entendre parler des alternatives comme l'utilisation de xargs etc, je veux savoir pourquoi j'essaie d'échec.

OriginalL'auteur KB Kim | 2012-05-14