Mam program, który wyrzuca dane wyjściowe do stdout
:
[OK] Something is ok
[OK] Something else is also ok
[FAIL] This does not look good
[FAIL] Neither does this
[OK] At least this is fine
Aby łatwiej dostrzec niepowodzenia na wyjściu, chciałbym zaznaczyć wystąpienia słowa kluczowego na FAIL
czerwono bez odrzucania innych wiadomości. Byłoby miło, gdybym mógł również podświetlić OK
słowa kluczowe kolorem zielonym :).
Wykonanie potoku egrep --color FAIL
spowoduje wyświetlenie tylko linii, w których występuje FAIL
słowo kluczowe.
grep
rozwiązanie, zobacz unix.stackexchange.com/a/34322tail -f
iawk
magii, jestem dobry, aby przejść =)Odpowiedzi:
W oparciu o
manatwork
genialny mały hack „albo nic” z drugiego pytania, oferuję to, co dodaje możliwość uzyskania dwóch kolorów podświetlenia:Oznacza to, że
grep
dwukrotnie przeglądasz dane wyjściowe, zaGREP_COLORS
każdym razem z inną zmienną środowiskową.Wartość „01; 32” oznacza „pogrubiony zielony”, a druga oznacza „pogrubiony czerwony”. Zobacz artykuł z Wikipedii na temat kodów ANSI, aby uzyskać więcej pomysłów.
Niestety, wymaga to GNU grep w wersji 2.5.3 lub nowszej. Starsze wersje GNU grep obsługiwały inny mechanizm kolorowania, ale w tych wersjach występuje błąd, który uniemożliwia korzystanie z tej funkcji w potoku więcej niż jeden raz. BSD grep emuluje starszy mechanizm barwienia GNU grep i będzie działał dwa razy w potoku, ale krzyczy o „pustym podwyrażeniu” z powodu
manatwork
włamania.Możesz usunąć odwrotne ukośniki na końcu pierwszych dwóch linii, aby wszystko było jedną linią. Właśnie podzieliłem go tutaj dla jasności i dobrej zabawy z formatem strony SE.
źródło
GREP_COLORS
liczby mnogiej. Używa tylko starszejGREP_COLOR
metody, a ta metoda zawiera błąd, który uniemożliwia prawidłowe działanie. Jeśli zmienisz polecenie, którego chcesz użyćGREP_COLOR=32
, zmieni ono kolor podświetlenia tylko pierwszego dopasowania. Jeśli przejdziesz przez wynikhexdump -c
, zobaczysz, że dodanie drugiegoegrep
polecenia coś robi, ale nie jest to zgodne z prawem ANSI. Podsumowując: musisz uaktualnić,grep
aby wszystko działało poprawnie.GREP_COLOR
(pojedynczy) błąd, mimo że funkcja została wycofana, gdy tylko została zastąpiona.Możesz do tego użyć wielowątkowego lub ccze, oba pozwalają konfiguracjom opisywać wyrażenia regularne w celu dopasowania i kolorów.
źródło
W oparciu o odpowiedź Warrena Younga napisałem ten skrypt w języku Python, który robi to samo bardziej elegancko i przy znacznie mniejszym pisaniu. Oto jak użyjesz tego skryptu:
źródło