удар: colorize второй столбец вывода

$cat test.txt | grep --colour=auto -C 100000 an

"окрасьте" также работает. Можно также определить псевдоним, чтобы заставить grep всегда использовать опцию:

alias grep='grep --colour=auto -C 100000'

Поместите вышеупомянутое в/etc/profile.d/где-нибудь или Ваш .bashrc или что бы то ни было.

8
27.05.2013, 23:42
2 ответа

С GNU grep если это была сборка с поддержкой PCRE:

ls -l | GREP_COLORS='mt=1;41;37' grep --color -P '^\S+\s+\K\S+'

С sed:

on=$(tput setaf 7; tput setab 1; tput bold) off=$(tput sgr0)
ls -l | sed "s/[^[:blank:]]\{1,\}/$on&$off/2"

Отметьте то использование setaf предполагает, что терминал поддерживает escape-последовательности цвета ANSI, таким образом, Вы могли бы также трудно кодировать его, который сделает его менее подробным также. Здесь с ksh93 (также bash и zsh) синтаксис:

on=$'\e[1;47;37m' off=$'\e[m'

Сделать вывод к энному столбцу:

n=5

GREP_COLORS='mt=1;41;37' grep --color -P "^(\S+\s+){$(($n-1))}\K\S+"

sed "s/[^[:blank:]]\{1,\}/$on&$off/$n"

Ссылки

10
27.01.2020, 20:10
  • 1
    grep -P является фантастическим.Большое спасибо. –  user1968963 26.05.2013, 22:47

Что-то вроде этого?

awk -v on="$(tput bold)" -v off="$(tput rmso)" '{ $2=on $2 off }; 1'

Править: используйте надлежащее tput подкоманды.

6
27.01.2020, 20:10
  • 1
    Установка $1 повредит выравнивание столбца все же. –  Stéphane Chazelas 26.05.2013, 20:38
  • 2
    Строго говоря, rmso должен отменить smso хотя (выдающийся режим), нет bold. На многих терминалах (tput rmso не отменяет tput bold). –  Stéphane Chazelas 26.05.2013, 22:48

Теги

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