Based on one answer at http://stackoverflow.com/questions/9605232/merge-two-lines-into-onehttps://stackoverflow.com/questions/9605232/merge-two-lines-into-one this seems to fit the bill
#!/usr/local/bin/bash
PATTERN1='TRACE *';
PATTERN2='DEBUG *';
PATTERN3='INFO *';
PATTERN4='ERROR *';
LINEOUT=""
while read line; do
case $line in
$PATTERN1)
echo $LINEOUT
LINEOUT="$line"
;;
$PATTERN2)
echo $LINEOUT
LINEOUT="$line"
;;
$PATTERN3)
echo $LINEOUT
LINEOUT="$line"
;;
$PATTERN4)
echo $LINEOUT
LINEOUT="$line"
;;
"")
LINEOUT=""
;;
*) LINEOUT="$LINEOUT ## $line"
;;
esac
done
echo $LINEOUT
NB: This will add a blank space at the begining of output