Цветовая разность

Я новичок в unix. Я хотел отформатировать файлы Unix условно, в настоящее время я работаю над командой diff и хотел узнать, можно ли форматировать текст вывода команды diff .

Пример:

Соответствующие значения должны отображаться зеленым цветом.
Непревзойденные значения должны отображаться красным цветом.

Предположим, у меня есть два файла file1 и file2 а моя команда – diff file1 file2 .

Теперь я хотел, чтобы предполагаемый вывод содержал 5 несоответствий, тогда эти несоответствия должны отображаться красным цветом. Как это сделать с помощью unix?

Короче: «Измените цвет на красный для вывода команды diff для значений, которые не соответствуют»,

5 Solutions collect form web for “Цветовая разность”

Если у вас есть доступ к 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-group-format и --new-group-format идентифицируют несогласованные строки и вставляют их между красными и цветовыми кодами сброса с использованием %< и %> , тогда как --unchanged-group-format вставляет соответствующие линии между зелеными и сбросить коды.

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

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

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

На 3.5 это выглядит так:

введите описание изображения здесь

с:

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

Я также запросил разницу на уровне слов как от diff-highlight адресу: https://lists.gnu.org/archive/html/diffutils-devel/2017-01/msg00001.html

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

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

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

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

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

Вы должны взглянуть на команду 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 

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

Цветной, разностный уровень

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

Цветной скриншот diff

 #!/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 )

  • Сортировка с командой ls в unix (ksh)
  • Как установить команды, которые запускаются перед каждым приглашением?
  • Удаленная команда ssh не отправляет echo-переменную из сценария ksh в AIX
  • как дифференцировать ошибку, возвращаемую при чтении, и для EOF в сценарии оболочки
  • Как я могу безопасно получить версию ksh?
  • В чем разница между $ * и $ @?
  • Вычитание дат в unix
  • Сколько элементов может хранить массив в unix-скрипте?
  • Можно ли настроить ksh в AIX на использование клавиши вкладок для завершения имени файла?
  • Как ksh93 так быстро?
  • Как можно отключить корневую оболочку через определенный промежуток времени?
  • -ksh: income_ext.ksh: не найден
  • Interesting Posts

    Как планировать выполнение задачи каждый день, если я не знаю, когда компьютер будет включен?

    Смонтируйте NTFS-диск с 777 правами доступа

    Гостевая Linux на рабочей станции VMware: как сопоставить сетевую карту гостевой ОС с другой виртуальной сетью?

    Какова цель абстракций, сеанса, лидера сеанса и групп процессов?

    Как отключить Wifi Power Save на Kali Linux

    Разница между очками и tty

    порт, который не отображается в выводе netstat

    Команда bash setenv не найдена

    Как мне сделать окно командной строки tmux пустой по умолчанию?

    Как я могу переключить поведение прокрутки мыши, пока экран уже запущен?

    Как я могу проверить или устранить неисправные аппаратные ссылки? "Mount: нет такого устройства"

    Служба isc-dhcp-relay не работает

    ksh: для печати четвертой строки над согласованной линией и второй строкой после согласованной строки

    Какая команда mysql может показать мне таблицы в базе данных и сколько строк есть?

    Получение фатальных ошибок PHP в vTiger при входе в систему от обычных пользователей

    Linux и Unix - лучшая ОС в мире.