Czy masz na myśli, że to, czego próbowałeś, nie działa?
Sébastien VALSEMEY
1
Rozwiązanie zostało napisane kilka razy w kontekście innych poleceń powłoki. Powinieneś poszukać „stdbuf” w prawym górnym rogu tej strony.
Gombai Sándor
Jaki jest problem? Po prostu spróbowałem tego na moim komputerze i działa zgodnie z oczekiwaniami. echo "..GET /api/ping (0.." | grep -v "ping"yelids 1 wynik bez meczów.
Matt Clark
Funkcja echa @MattClark jest łatwa, ponieważ jej wyjście jest zakończone i opróżnione. Ciągła rura oznacza buforowanie, które zwykle jest przyjacielem, ale gdy czekanie na wypełnienie bufora i spłukanie oznacza wpływ na proces, jest to brzydki wróg. Na szczęście można go oswoić za pomocą stdbuf spośród kilku opcji.
Gombai Sándor
nawet nadal, tail -n 0 -f test | grep -v "ping"a uruchomienie tego w innym terminalu echo "..GET /api/ping (0.." >> testnadal nie powoduje wyjścia. Przetestowałem to na 4 różnych dystrybucjach unixowych i cygwin na Windows. Wszystkie mają takie samo oczekiwane zachowanie.
Matt Clark
Odpowiedzi:
0
Możesz zrobić coś takiego:
tail -F ~/Your.log | while read LINE;do
if [[ ! "$LINE" =~ "ping" ]]; then
echo $LINE
done
fi
done
echo "..GET /api/ping (0.." | grep -v "ping"
yelids 1 wynik bez meczów.tail -n 0 -f test | grep -v "ping"
a uruchomienie tego w innym terminaluecho "..GET /api/ping (0.." >> test
nadal nie powoduje wyjścia. Przetestowałem to na 4 różnych dystrybucjach unixowych i cygwin na Windows. Wszystkie mają takie samo oczekiwane zachowanie.Odpowiedzi:
Możesz zrobić coś takiego:
źródło