Как окрасить различный вывод?

Я попробовал Монетный двор и Ubuntu, и новая Ubuntu - то, что я предложил бы. Я говорю это из-за способа, которым настраивается GUI. Большой легкий считать значки, некоторые, которые очевидны относительно того, что они делают.

18
06.01.2019, 15:32
14 ответов

Если у вас есть доступ к GNU diff, вы можете использовать его опции -X-group-format, чтобы получить этот эффект без каких-либо дополнительных инструментов:

diff --old-group-format=$'\e[0;31m%<\e[0m' \
     --new-group-format=$'\e[0;31m%>\e[0m' \
     --unchanged-group-format=$'\e[0;32m%=\e[0m' \
     file1 file2

Для получения красного и зеленого цвета используются цветные экранирующие коды ANSI , при этом ANSI-C цитирует в оболочке для доступа к выходам \e.

-старый групповой формат и -новый групповой формат идентифицируют несовпадающие линии и вставляют их между красными и цветными кодами сброса, используя %< и %>, в то время как -созданный групповой формат вставляет совпадающие линии между зелеными и цветными кодами сброса.

Также можно использовать -старый-линейный формат (и т.д.), за счет избыточных цветовых переходов на каждой линии: --old-line-format=$'\e[0;31m%L\e[0m'.

19
27.01.2020, 19:45

Вам следует взглянуть на команду hl , доступную на github: git clone http://github.com/mbornet-hl/hl и далее: http://www.flashnux.com/notes/page_000022_US.html

hl - это команда Linux, написанная на C, специально разработанная для раскрашивания текста. файл или вывод команды. Вы можете одновременно использовать до 42 цветов и использовать файл конфигурации для упрощения командных строк. Вы можете раскрасить вывод каждой команды, которую можно передать другой. И если вы знаете, что такое регулярные выражения, вам будет очень легко использовать их. Вы можете использовать страницу man , чтобы понять, как ее использовать.
hl очень прост в использовании и настройке. Вы даже можете использовать сценарий hl_generic для раскрашивания вывода команд без изменения их синтаксиса.
Вы можете, например, раскрасить вывод команды diff , просто набрав обычную команду:

diff file1 file2

Если вам нужна помощь, просто отправьте мне электронное письмо .
С уважением.

1
27.01.2020, 19:45

Цветной, уровень слов diff output

Вот что вы можете сделать с приведенный ниже скрипт и diff-highlight :

Coloured diff screenshot

#!/bin/sh -eu

# Use diff-highlight to show word-level differences

diff -U3 --minimal "$@" |
  sed 's/^-/\x1b[1;31m-/;s/^+/\x1b[1;32m+/;s/^@/\x1b[1;34m@/;s/$/\x1b[0m/' |
  diff-highlight

(Благодарим @ retracile, ответ за выделение sed )

4
27.01.2020, 19:45

diff --color была добавлена ​​опция GNU diffutils 3.4 (2016-08-08)

Это реализация по умолчанию diff на большинстве дистрибутивов, которые скоро получат ее.

В версии 3.5 это выглядит так:

enter image description here

с:

diff --color -u \
  <(seq 6 | sed 's/$/ a/') \
  <(seq 8 | grep -Ev '^(2|3)$' | sed 's/$/ a/')

Я также запросил разницу на уровне слов из diff-highlight по адресу: [Diffutils-devel] Добавить флаг в производить цветной вывод, такой как git diff-h | lists.gnu.org

По-видимому, добавлено в коммит c0fa19fe92da71404f809aafb5f51cfd99b1bee2 (март 2015 г.).

23
27.01.2020, 19:45

Попробуйте colordiff file1 file2

Доступность colordiff в вашем дистрибутиве Linux / BSD

Те, кто использует Debian или Ubuntu (или любую из их производных), вероятно, могут просто использовать "apt-get install colordiff" для загрузки и установки; { {1}} colordiff также упакован для ряда других дистрибутивов и операционных систем Linux, UNIX и BSD .

(цитата из http://www.colordiff.org/ )

9
27.01.2020, 19:45

Просто примечание :, чтобы получить вывод «сторона -на сторону -», вам нужно «--цвет=всегда». Вы также можете разбить его на страницы с меньшим количеством страниц и сохранить цветной вывод :

.
diff -y --color=always file1 file2 | less -R

И еще один совет: :старайтесь оставить переключатель «--color=always» в конце. Причина? С помощью dmesg из утилиты -linux 2.27.1:

dmesg --human --color=always | less -R    # works
dmesg --color=always --human | less -R    # doesn't work
1
27.01.2020, 19:45

На данный момент на Github есть очень удобный инструмент, созданный с помощью Python, который называется icdiff. Производит красивые цветные выходные данные, которые также осведомлены о «серьезности». Я использую это все время, стоит проверить.

1
27.01.2020, 19:45

если у вас установлен vim, вы можете сделатьdiff file1 file2 | vim -

Vim распознает формат diff и придаст ему правильную окраску. Тире в конце позволяет vim принимать ввод от команды diff.

5
27.01.2020, 19:45

Этот скрипт использует стандартный предварительный -diff версии 3.4 (. Он должен работать с любой версией diff )и раскрашивает вывод без какого-либо изменения выходного формата. Он работает с последней версией RHEL (версии 7.5 ), которая имеет версию GNU diff 3.3. Просто поместите его в свой каталог ~/bin или в любое другое место на вашем пути (. Я предлагаю назвать его "cdiff" ).

#!/bin/bash
file1color="$(tput setaf 1)"
file2color="$(tput setaf 2)"
sepcolor="$(tput setaf 6)"
reset="$(tput sgr0)"
diff $* |sed -e "s/^\\(<.*\$\\)/$file1color\\1$reset/;s/^\\(>.*\$\\)/$file2color\\1$reset/;s/^\\(---\$\\)/$sepcolor\\1$reset/"
1
27.01.2020, 19:45

Символ -Разница цветов уровня :Установить ccdiff

ccdiff -r /usr/share/dict/words /tmp/new-dict

Output of ccdiff

2
27.01.2020, 19:45

Установить Generic Colouriser(grc)и:

grc diff file1 file2

Доступно как для Linux, так и для MacOS.

1
31.01.2020, 14:38

Если вы работаете с контейнером apline linux и не хотите/не можете использовать эти другие инструменты, это может сработать в крайнем случае.

RED="\\\033[0;31m"
GREEN="\\\033[0;32m"
OFF="\\\033[0m"
DIFF=$(diff --label "GOT" <(echo "$OUTPUT") --label "EXPECTED" <(echo "$EXPECTED_OUTPUT"))
printf -- "$(echo "$DIFF" | sed "s|^-|$RED-|g" | sed "s|^+|$GREEN+|g" | sed "s|$|$OFF|g")"

Вот пример вывода.

sample output

0
21.02.2020, 12:59

Для изменения цветовой палитры diff используйте опцию --palette(diff версии 3.4 и выше):

diff --color=always --palette='ad=1;3;38;5;154:de=1;3;38;5;9' file1 file2

Здесь adи deопределяют цвет добавляемого и удаляемого текста соответственно. Подробное описание опций diff см. в man diffили info diff.

2
29.03.2020, 23:06

diff 3.4+ может раскрашивать свой вывод в некоторых режимах, таких как diff -u, diff -c. Также доступен чистый сценарий оболочкиhttps://github.com/ildar-shaimordanov/colordiff. Он выполняет почти ту же работу, что и Perl https://github.com/daveewart/colordiff.

0
05.11.2020, 12:27

Теги

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