bash command to grep something on stderr and save the result in a file

I am running a program called stm. I want to save only those stderr messages that contain the text "ERROR" in a text file. I also want the messages on the console.

How do I do that in bash?


Use the following pipeline if only messages containing ERROR should be displayed on the console (stderr):

stm |& grep ERROR | tee -a /path/to/logfile

Use the following command if all messages should be displayed on the console (stderr):

stm |& tee /dev/stderr | grep ERROR >> /path/to/logfile

Edit: Versions without connecting standard output and standard error:

stm 2> >( grep --line-buffered ERROR | tee -a /path/to/logfile >&2 )
stm 2> >( tee /dev/stderr | grep --line-buffered ERROR >> /path/to/logfile )

Need Your Help

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.