Как я могу сохранить цветовые коды с входом grep?

Другие ответы лучше для большинства случаев, но я добавляю это здесь для пользы завершения:

# shows all displays
$ xrandr
# set one of the displays to primary
$ xrandr --output <display> --primary

Этот метод лучше, если Вы прикрепляете или присоединяете свой ноутбук к различному / несколько мониторов, потому что он корректирует его на лету. Это - также альтернатива командной строки ответу Элиа.

15
15.03.2016, 20:23
1 ответ

Использовать --color=always.

grep обнаруживает, если произведенный к каналу (или файл). Вы больше всего никогда не хотите цветов, когда произведенный должен зарегистрировать – поскольку это - escape-последовательности для терминала. Обычно:

foo ^[[01;31m^[[Kbar^[[m^[[K

от, например:

grep pattern file > result

Переопределять использование --color=always.

grep --color=always pattern file | ...

Пример:

Наличие файла:

ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz

Затем

grep --color=always ID file | grep --color=always 2013 | grep foo

окрасил бы ID, 2013 и foo.

grep --color=always ID file | grep 2013 | grep foo

окрасил бы ID и foo, но нет 2013.

1Important: также необходимо помнить, что добавленная помеха от цветов передается для следующего управления в цепочке. После того как идентификатор окрашен, Вы не можете (легко), соответствие, например. ID=111.


На немного вызывают, можно было бы, возможно, хотеть терминал, раскрашивает файл. Попробуйте, например.

 grep --color=always foo file > result
 cat result

Хотя получающийся файл имел бы очень ограниченную мобильность.


Окраска себя является также расширением.


Как упомянуто хорошим @slm, Вы могли добавить:

export GREP_OPTIONS="--color=always"

к Вашему .bashrc и т.д., но не делайте, если Вы по некоторым причинам действительно не понимаете последствий и все еще хотите сделать это. Это во многих отношениях повредилось бы grep из-за того, что упомянутый выше 1.

Добавьте alias если Вы часто используете его.

 alias cgrep='grep --color=always'

GREP_OPTIONS и --color выберите три варианта: never, auto и always. Первые два должны быть единственными, для которых рассматривают GREP_OPTIONS.

Вы могли также проверить GREP_COLORS в man страницы или в гну grep.

23
27.01.2020, 19:49
  • 1
    Дополнительные детали об этом профессионалы/недостатки методов здесь: stackoverflow.com/questions/867877 / … –  slm♦ 12.05.2013, 18:46
  • 2
    добавляют это к ответу также: export GREP_OPTIONS="--color=always" в .bashrc делает опции значениями по умолчанию для любых властей, и Вы в значительной степени закрепили его! –  slm♦ 12.05.2013, 18:53
  • 3
    Хороший материал в этом Супер Вопросы и ответы Uuser: superuser.com/questions/36022 / … –  slm♦ 12.05.2013, 18:54
  • 4
    "grep обнаруживает, если произведенный к каналу" - ага! Это - ключ, grep не окрашивает, если это - часть канала. Должен быть принцип замены против этого вида вещи :-/ –  Chris2048 12.05.2013, 19:11
  • 5
    @Chris2048: Это стандартно для большинства инструментов, печатающих цвета к терминалу. Вы могли бы найти еще некоторую деталь этим, о том, как она обнаруживается, И это шоу некоторые выпуски, например, ls и цвета на собственном компоненте OSX ls и гну coreutils. –  Runium 12.05.2013, 19:24

Теги

Похожие вопросы