Potrzebuję wyjścia grep z kontekstem, kolorem i pustymi liniami jako separatorem grupy. W tym pytaniu nauczyłem się definiować niestandardowe group-separator
i zbudowałem moje polecenie grep w następujący sposób:
grep --group-separator="" --color=always -A5
ale separator grupy w rzeczywistości nie jest pusty, zamiast tego nadal zawiera kod koloru (tj [[36m[[K[[m[[K
.). To dlatego, że używam --color=always
. Ale potrzebuję koloru w moim poleceniu grep i potrzebuję separatora, aby być pustą linią (do dalszego przetwarzania)
Jak mogę połączyć te dwa warunki?
--color=always
dopasowanie, wydrukuje się w kolorze, a jeśli masz--group-separator=""
ustawiony pusty ciąg, otrzymasz pustą linię po dopasowanej grupie. Spróbuj ponownie, pozostawiając--group-separator=""
pusty ciąg znaków, a nie określony kolor, a następnie wyjaśnij, co nie działa.od -c
aby zobaczyć ukryte znaki, które pojawiają się w pustych wierszach.od
.Odpowiedzi:
Jeśli używasz
GREP_COLORS
zmiennej środowiskowej, możesz kontrolować określone kolory dla każdego typu dopasowania.man grep
wyjaśnia zastosowanie zmiennej.Poniższe polecenie wyświetli kolorowe dopasowanie, ale nic w linii oddzielającej grupę, tylko pusta linia. Przepuszczony przez
od
ujrzysz ucieczkę koloru przed i po meczu, ale tylko\n\n
w separacji grupowej.Wyłączenie
se
komponentu spowoduje wyłączenie drukowania kolorów w separatorze grup.Ponieważ w powyższym przykładzie użyto wszystkich wartości domyślnych dla
GREP_COLORS
poniższych, również będą działać.Jeśli nie używasz
bash
podobnej powłoki, być może będziesz musiałGREP_COLORS
najpierw wyeksportować .źródło
Osobiście robię to za pomocą Perla, a nie
grep
. Mam mały skrypt, który podświetli dany wzór w kolorze:Jeśli zapiszesz to na swojej ścieżce jako
color
, możesz uzyskać pożądaną wydajność, uruchamiającW ten sposób skrypt koloruje dopasowania dla Ciebie i możesz powiedzieć,
grep
aby nie używać kolorów i uniknąć tego problemu.źródło