Мы также столкнулись с этой проблемой, но в нашем случае это было потому, что у нас были папки, оканчивающиеся на «.Lib». Понял это из этого SO вопроса: Visual Studio 2015. Файлы не добавлены в TFS
В моей системе было буферизовано около 8 КБ, прежде чем я получил какой-либо вывод. Эта последовательность работала, чтобы немедленно следовать за файлом:
tail -f logfile | while read line ; do echo "$line"| grep 'org.springframework'|cut -c 25- ; done
То, что у вас есть, должно работать нормально - в этом вся идея конвейеров. Единственная проблема, которую я вижу, заключается в том, что в имеющейся у меня версии cut
(GNU coreutiles 6.10) вы должны использовать синтаксис cut -c 25-
(т.е. использовать знак минус вместо знака плюс), чтобы удалить первые 24 символа.
Вы также ищете разные шаблоны в ваших двух примерах, если это актуально.
Assuming GNU grep, add --line-buffered
to your command line, eg.
tail -f logfile | grep --line-buffered org.springframework | cut -c 25-
Edit:
I see grep buffering isn't the only problem here, as cut doesn't allow linewise buffering.
you might want to try replacing it with something you can control, such as sed:
tail -f logfile | sed -u -n -e '/org\.springframework/ s/\(.\{0,25\}\).*$/\1/p'
or awk
tail -f logfile | awk '/org\.springframework/ {print substr($0, 0, 25);fflush("")}'