Korzystam z kodu testu jednostkowego. Kod testu jednostkowego wyświetla zwykły tekst. Jest dużo tekstu, więc chcę podkreślić ważne słowa kluczowe dla użytkownika.
W tym przypadku słowami kluczowymi są „PASS” i „FAIL”.
Jak koloryzujesz „PASS”, aby był zielony, a „FAIL”, aby był czerwony?
bash
shell-script
scripting
colors
Trevor Boyd Smith
źródło
źródło
Odpowiedzi:
supercat
wydaje się robić to, czego szukasz.Wydaje się, że nie ma sposobu, aby powiedzieć mu, co ma być kolorowane w wierszu poleceń, musisz określić plik konfiguracyjny.
Wydaje mi się, że pamiętam, że kiedyś istniał program o nazwie „hilite” lub „hl”, który wyróżniał tekst pasujący do wzorca (na przykład
grep --colour
, ale wyświetlał również niepasujące linie), ale nie mogłem go znaleźć, gdy go szukałem.Wreszcie, GNU
grep
może być użyte do podświetlenia wzorów - ale można użyć tylko jednego koloru (tzn. Nie możesz mieć PASS w kolorze zielonym i FAIL w kolorze czerwonym, oba byłyby podświetlone tym samym kolorem).Przeprowadź dane przez coś takiego:
W tym przykładzie użyto egrep (aka
grep -E
), ale działają również-G
podstawowe wyrażenia regularne,-F
fixed-string i-P
PCRE.Wszystkie mecze zostaną podświetlone. Domyślnie jest czerwony lub ustaw zmienną GREP_COLOR env var.
Kluczem do tego jest to, że finał
|$
we wzorze pasuje do końca linii (tzn. Wszystkie linie pasują), więc wszystkie linie będą wyświetlane (ale nie pokolorowane).Są
\b
to znaczniki granicy słowa, dzięki czemu pasują np. FAIL, ale nie FAILURE. nie są konieczne, więc usuń je, jeśli chcesz dopasować częściowe słowa.Oto przykładowy skrypt otoki dla superkata, który napisałem wczoraj. Działa, ale pisząc to odkryłem, że supercat nie ma żadnej opcji wyszukiwania bez rozróżniania wielkości liter. IMO, dzięki czemu program jest znacznie mniej przydatny. To jednak znacznie uprościło skrypt, ponieważ nie musiałem pisać opcji „-i” :)
źródło
supercat
możesz zmodyfikować opublikowany skrypt, aby wygenerować tymczasowy plik konfiguracyjny na podstawie argumentów wiersza poleceń, a następnie wywołaćspc -c /path/to/your/temp/config
. Umożliwi to łatwe określenie różnych kolorów dla różnych wzorów w wierszu poleceń.Oto skrypt ogólnego przeznaczenia do kolorowania wzorów wyrażeń regularnych (prawdopodobnie wymaga retuszu):
Nazwij go
hilite.sh
i użyj w ten sposób:źródło
community wiki
ponieważ moje rozwiązanie nie działa.$BIN
poprzezeval
do podstawienia polecenia jest prawdopodobnie krucha, kłopotliwe, a wręcz niebezpieczne. STDOUT jest strumieniem i ogólnie ma być przetwarzany przez narzędzia podobne do strumienia. Próba przechwycenia całego strumienia w zmiennej nie jest zbyt wydajna. Ponadtoeval
jest niebezpiecznie potężny , więc używaj go tylko wtedy, gdy naprawdę wiesz, co robisz.Osadzanie dowolnych ciągów (takich jak
tput
dane wyjściowe) wsed
wyrażeniach zamieniających jest problematyczne, ponieważ musisz upewnić się (poprzez ucieczkę), że jest ona poprawnased
składnia, co jest bardziej złożone, czego najlepiej unikać. Użyłbymawk
zamiast tego. Jako przykład:Kluczem jest przypisanie
tput
sekwencji doawk
zmiennych, wykonanych tutaj przy użyciu-v
opcji.źródło
awk
Skrypt składa się z zestawu klocków (rzeczy między{}
na poziomie górnym). Każdy blok jest powiązany z warunkiem - w moim poście powyżej nie ma takiego, ponieważ chcę bezwarunkowo działać na każdej linii wejściowej. Awk działa poprzez odczytywanie rekordów z plików lub standardowe wejście (w tym przypadku jest to STDIN b / c nie podano nazw plików) i dopasowanie ich do każdego bloku w kolejności, wykonując blok na rekordzie, jeśli warunek jest zgodny.użyj printf:
na przykład.
ostatni
\n
dodaje znak nowej linii.aby zobaczyć możliwe wartości, spróbuj czegoś takiego:
oprócz koloru można dodawać modyfikatory, takie jak pogrubienie, podkreślenie lub kolorowy tekst z kolorowym tłem, łącząc liczby. Aby utworzyć niebieski tekst z szarym tłem, które jest podkreślone i przekreślone poprzez użycie:
Twoje zdrowie,
/ B2S
źródło
Jeśli z przyjemnością zainstalujesz skrypt BASH
ack
, ahhlighter
pakiet ma przydatne domyślne kolory i prosty interfejs https://github.com/paoloantinori/hhighlighter :Możesz go użyć w taki sposób, aby podświetlić wiersze rozpoczynające się od
FAIL
:lub które zawierają
FAIL
:lub dla różnych wspólnych wpisów w dzienniku:
I oczywiście dla jednego koloru (czerwonego) z prostym grepem:
^
Pasuje do każdego wiersza, ale jest specjalny układ dopasowujący i drukuje całą linię. Wyrażenie, które należy wyróżnić, jest zdefiniowane po|
. Można dodawać kolejne wyrażenia, o ile są one oddzielone|
.źródło