Это может все быть сделано в awk также:
awk '"[0-9]+ errors" {sum += $1}; END {print sum}' verification_report_3.txt
Так как у Вас есть две команды, было бы лучше использовать:
{ make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64"; } 2>&1 | myprogram
Или
( make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" ) 2>&1 | myprogram
make clean
не направляет его вывод к каналу, Вы захотите использовать любой из двух выше, чтобы позволить оболочке перенаправить вывод обоих make
вызовы как один.
Необходимо перенаправить STDERR к STDOUT для всех команд. Затем можно передать все это по каналу в myprogram
.
( make clean 2>&1 && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" 2>&1 ) | myprogram
(make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64") 2>&1 | myprogram
В зависимости от сложности myprogram Вы могли также попытаться передать Ваш делать op к myprogram, где Вы читаете stdout и stderr как отдельный поток.
Это зависит от того, как сложный Вы хотите сделать myprogram.
Основным преимуществом является способность обработать stdout и stderr независимо вместо смешанного.