Как насчет этого?
script.py | tee "fulldata_$date.log" | grep 'MAAS' > "filtered_$date.log"
Сначала tee
нефильтрованные данные, и grep
все еще видит все и фильтрует их.
Вы можете инвертировать их с помощью процесса подстановка, что-то вроде
script.py | tee >(grep 'MAAS' > "filtered_$date.log") > "fulldata_$date.log"
, но это не кажется ни проще, ни легче для чтения.