grep меняет цвет подсветки с первой строки на вторую

Я провел часы с новым 4K-телевизором и графическим процессором nVidia, пытаясь получить максимально возможную частоту обновления. Сейчас я настроил относительно простую настройку grep для отображения подключенных мониторов, разрешения и частоты обновления.

Результаты xrandr --current | grep -e " connected" -A1:

grep connected.png

Я хочу выделить текущую частоту обновления (обозначается *). Когда connected выделено в первой строке, это визуально отвлекает и излишне. Если я grep второй раз выделю * во второй строке, первая строка с именем выхода исчезнет. Это не полезно.

Как я могу переместить исходное выделение цвета grep из первой строки со второй grep и при этом сохранить первую строку?

1
задан 27 April 2019 в 20:19

1 ответ

grep на EOL (Конец символа Line)

Выполнение grep второй раз для выделения другого слова заставляет все другие строки без слова исчезать. Секрет к grep на другом слове ИЛИ символе EOL (\$ или просто $). Полное объяснение здесь:

Новая команда становится:

  • xrandr --current | grep -e " connected" -A1 | grep -E '\*|$':

И это возвращает это:

grep refresh rate.png

  • $ представляет поиск EOL (Конец Строки) символ, который находится на каждой строке. Это означает каждую строку сначала grep вновь появляется на втором grep. Символ EOL не видим, таким образом, Вы не видите выделенный в конце каждой строки.
  • Поскольку второе grep ищет * (который является управляющим символом), он должен предварительно ожидаться с \. Обычно Вы просто использовали бы word|$ искать и нет \word|$. Звездочка (или нащельная рейка) * символ является исключением. Посмотрите Метасимволы Выхода.

Бонусный ответ 1

Улучшите произведенный путем выделения значений Hz

Используя ответ от: Соответствие десятичному числу в grep. Можно выделить фактическое значение частоты в дополнение к *.

Эта команда:

xrandr --current | grep -e " connected" -A1 | grep -E '[0-9]+\.[0-9]+\*|$'

Дает Вам это:

grep all digits.png


Бонусный ответ 2

Улучшите вывод с различными цветами подсветки

Красный цвет подсветки по умолчанию не может выделиться хорошо на Вашем мониторе. Я знаю, что это отчасти размывается в моем gnome-terminal. От этого окрасил блог grep, можно создать эти псевдонимы:

alias    grey-grep="GREP_COLOR='1;30' grep --color=always"
alias     red-grep="GREP_COLOR='1;31' grep --color=always"
alias   green-grep="GREP_COLOR='1;32' grep --color=always"
alias  yellow-grep="GREP_COLOR='1;33' grep --color=always"
alias    blue-grep="GREP_COLOR='1;34' grep --color=always"
alias magenta-grep="GREP_COLOR='1;35' grep --color=always"
alias    cyan-grep="GREP_COLOR='1;36' grep --color=always"
alias   white-grep="GREP_COLOR='1;37' grep --color=always"

Для постоянной доступности (персистентный через перезагрузки) добавляют их к Вашему ~/.bashrc файл.

Эти команды:

xrandr --current | grep -e " connected" -A1 | green-grep -E '[0-9]+\.[0-9]+\*|$'
xrandr --current | grep -e " connected" -A1 | yellow-grep -E '[0-9]+\.[0-9]+\*|$'
xrandr --current | grep -e " connected" -A1 | cyan-grep -E '[0-9]+\.[0-9]+\*|$'

Дает Вам это:

grep colored.png

  • После попытки всех цветов я являюсь ведущим к желтому как мой фаворит.
1
ответ дан 27 April 2019 в 20:19

Другие вопросы по тегам:

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