Jest podobne pytanie w Zachowaj kolorowanie ls po grep'owaniu, ale denerwuje mnie, że jeśli przełączysz wyjście kolorowego grepa do innego grepa, kolorystyka nie zostanie zachowana.
Jako przykład grep --color WORD * | grep -v AVOID
nie zachowuje koloru pierwszego wydruku. Ale dla mnie ls | grep FILE
zachowuję kolor, skąd ta różnica?
Odpowiedzi:
grep
czasami wyłącza wyjście koloru, na przykład podczas pisania do potoku. Możesz zmienić to zachowanie za pomocągrep --color=always
Właściwa linia poleceń byłaby
Jest to dość rozwlekłe, ale możesz też po prostu dodać wiersz
do twojego
.bashrc
na przykład i użyjcgrep
jako kolorowego grepa. Podczas redefiniowaniagrep
możesz napotkać problemy ze skryptami, które polegają na określonym wyjściugrep
i nie lubią kodu ucieczki ascii.źródło
grep
.alias grep='grep --color=auto
więc muszę po prostu zmienić moje miejsce, w~/.bashrc
którym zostało zdefiniowane w pierwszej kolejności.Mała rada:
Podczas używania
grep --color=always
rzeczywiste ciągi przekazywane do następnego potoku zostaną zmienione. Może to prowadzić do następującej sytuacji:Mimo że opcja ta
-ve '12'
powinna wykluczać środkową linię, tak się nie stanie, ponieważ między1
a znajdują się kolorowe znaki2
.źródło
--color=auto
, to powinno wychwycić fakt, że używasz go gdzie indziej i całkowicie stłumić kolory, ale w pewnym sensie pokonuje to cel. Jeśli nadal chcesz kolorowe wyniki, myślę, że możesz je ponownie grepować przy ostatnim użyciu rury--color
.--color=always
działa z, jak zakładam, zastrzeżeniami przedstawionymi powyżej.Po prostu powtórz to samo polecenie grep na końcu potoku.
grep WORD * | grep -v AVOID | grep -v AVOID2 | grep WORD
źródło
grep -v AVOID * | grep WORD