Czy istnieje polecenie, którego można użyć do łatwego wyróżnienia (za pomocą kolorów, pogrubionego tekstu lub odwróconego tylnego / pierwszego planu) określonych ciągów w stdin, jednocześnie przekazując cały ciąg do stdout? Zastanawiam się nad jego zbudowaniem , ale wolałbym po prostu go użyć, jeśli już istnieje. Niektóre pożądane funkcje:
- Oddzielne ciągi wyróżnień są podświetlane w różny sposób, automatycznie. Na przykład pierwszy ciąg zostanie podświetlony na czerwono, drugi na zielono, trzeci na niebiesko bez ręcznej konfiguracji .
- Wykrywa obsługę kolorów i wraca do pogrubionych / odwróconych / innych metod podświetlania, o ile są one dostępne.
- Pozwól na dopasowanie wyrażeń regularnych i literałów.
- Najlepiej robi coś inteligentnego, jeśli dopasowania się pokrywają, na przykład „foobar” i „barbar”.
- Nic nie jest modyfikowane między standardowymi i standardowymi oprócz dodania kodów kolorów.
Odpowiedzi:
Może Generic Colouriser (grc) Radovana Garabíka ? Oczekuje pliku konfiguracyjnego jako argumentu i działa z wyrażeniami regularnymi. Więc nie całkiem bez konfiguracji, ale możesz użyć procesowego zastępowania procesów (
<(list)
), więc na pewno bez ręcznej konfiguracji :-)źródło
grc
ma skryptu pomocnika:grcat
. Oto przykład kolorowania wszystkich wielkich liter na czerwono. Krok 1: Skonfiguruj plik konfiguracyjny:printf "regexp=[A-Z]\ncolours=red\n" > ~/.grc/red-caps
Krok 2; Użyj go:echo Hello World | grcat red-caps
... Strona man podaje 3 przeszukiwane katalogi konfiguracji, a następnie sugeruje (?), Że plik konfiguracyjny może być ścieżką bezwzględną, ale ta ostatnia metoda znajdowania pliku konfiguracyjnego działa tylko dla mnie ze ścieżkami względnymi (grc wersja 1.3)Sed na ratunek!
Możesz to poprawić (bo naprawdę tego potrzebuje), ale działa całkiem dobrze.
Dla uproszczenia hilight przyjmuje parę argumentów (najpierw dopasowanie, drugi kolor) W tym skrypcie atrybut jest zawsze pogrubiony
Przeczytaj man console_codes (Graphic Rendition), aby zobaczyć sekwencje ucieczki kolorów, lub spróbuj tego
Ma to istotne wady, ponieważ korzystanie z tego działa:
ale to wcale nie jest:
ponieważ [: digit:] znajduje cyfry w sekwencjach ucieczki z poprzednich sesji.
Coś jak:
zawsze będzie działać jak wyjątek.
Za pomocą komendy czasu znalazłem te przyrosty o cztery, które upłynęły, co nie jest zbyt duże.
Polecenie sed można zastąpić dowolnym innym parserem, który ci się podoba lub pasuje do twoich potrzeb (awk, itp ...)
źródło
Można również użyć egrep ze wzorem, który pasuje do każdej linii znaku niedrukowalnego, na przykład:
źródło
clide działa dobrze. Używam go na RHEL 6.2 z repozytorium EPEL
źródło
Jeśli twoja wersja
grep
ma kolor, możesz użyć zmiany wyrażenia regularnego, aby grep podświetlił tekst, a także dopasował każdą linię, aby nic nie zostało wykluczone. Następujące czynności powinny załatwić sprawę:źródło
Jak wspomniano w linku,
grep --color=always
działa tylko dla jednego wzorca. To powiedziawszy, nie wierzę, że takie narzędzie istnieje.źródło
Używam http://em.readthedocs.org/ . Łatwy w instalacji na różnych platformach dzięki Pythonowi. Prosty i działa dobrze.
źródło
em
, przeredaguj swoją odpowiedź, aby było jasne, że nie jesteś użytkownikiem, ale autorem sugerowanego narzędzia.