Хвост колоризации производится с sed

Нет никакого понятия вкладок или позиций табуляции в cat; программа просто направляет исходные данные к выводу и рассматривает вкладки как любой другой символ. Если устройство вывода, окажется, будет терминалом, то вкладки будут обработаны согласно любому поведению, которое терминал настроен для обеспечения.

Системам реализовывая POSIX.1 назвали команду tabs(1) это скорректирует понятие терминала того, как должны быть отображены вкладки. В зависимости от конкретной вкладки расположение не считается хорошей идеей, поскольку кто-то может отправить, Ваш файл к некоторому другому устройству, такому как принтер так не пойдет, что Вы предназначили.

Когда Вы корректируетесь ts в vim (или плоскость vi), все, что Вы делаете, корректируется, как редактор интерпретирует символы табуляции при отображении. Это не имеет никакого влияния, что заканчивается в файле.

4
05.12.2012, 01:25
2 ответа

Обратные галочки '' в команде эха порождают процесс, и она производится, заменен в командную строку эха. Вы видите это с, например.

echo "`tput setaf 1`" | hexdump -C
00000000  1b 5b 33 31 6d 0a                       |.[31m.|

Это работает потому что содержание "..." расширены прежде чем быть переданным эху.

sed управляют, чтобы Вы использовали, переносит все в ' таким образом, это передается sed без расширения, и sed рассматривает все это как буквенный текст.

Можно зафиксировать это путем помещения "" вокруг команды sed

echo "foo" | sed -e "s/\(foo\)/`tput setaf 1`\1`tput op`/g"

У Вас также была ошибка в Вашей команде sed. ( и ) потребность, которой оставят \( и \) обозначить помнивший шаблон. У меня есть также никогда использование \0 Я всегда использовал \1 как первый помнивший шаблон.

5
27.01.2020, 20:48

Это должно быть sed?

echo "foo bar baz" | grep --color=auto "bar"

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

Заставить его распечатать все строки и только выделиться bar:

echo "foo bar baz" | grep -E --color=auto "^|bar"
5
27.01.2020, 20:48
  • 1
    +1 правильный инструмент для задания - нет никакой потребности изнасиловать sed только к выводу colorize. –   23.11.2012, 22:41
  • 2
    @syneticon-dj: Это на самом деле не работает для окраски вывода хвоста все же. Это только распечатает строки, содержащие "панель" (с выделенной панелью), и все другие строки оставят непечатными. добавление –   23.11.2012, 22:45
  • 3
    @Iain -C <great number> должен помочь как быстрый –   24.11.2012, 00:52
  • 4
    Не стоящий совершенно нового ответа, но можно также просто сделать: tail file | grep "pattern\|" или tail file | grep -E "pattern|", В зависимости от Вашего настроения. ;) (Предположим, Вы уже имеете --color=auto в Вашем COLOR_OPTIONS набор переменной среды) –  Dr Beco 20.11.2017, 05:43

Теги

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