Não tenho conhecimento de nenhum comando padrão para esse propósito, mas é fácil criar um próprio em um pequeno script de shell. Crie o seguinte, torne-o executável e adicione sua localização ao seu PATH.
Editar - atualizado para manipular entrada padrão de várias linhas e para manipular espaços na entrada.
printOrWhatnot:
#!/bin/bash
# printOrWhatnot script, to re-pipe stdin, while echoing something else via stderr
# read stdin (possibly multi-lined) into $my_array[]:
while read -t 1 piped
do
my_array=("${my_array[@]}" "$piped")
done
# echo the supplied arguments by sending them to stderr:
echo "$@" 1>&2
# now spew $my_array[], line by line, to any further processing:
arrayLen=${#my_array[@]}
for (( i=0; i<$arrayLen; i++ ));
do
echo ${my_array[$i]}
done
Agora, deve funcionar exatamente como você sugeriu:
myhost> echo dog | printOrWhatnot "PUTTING MY THING DOWN" | sed 's/dog/cat/g' | printOrWhatnot "FLIP IT"|rev
PUTTING MY THING DOWN
FLIP IT
tac