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

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

Пример:

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

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

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

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

  • поместите вкладку перед каждой выходной строкой на AIX / ksh
  • Перенаправление. Что такое «<>», «<&» и «> & -»?
  • Использование сдвига $ (($ OPTIND -1))
  • Объединить несколько строк с пробелами в них?
  • -ksh: pushd: не найдено
  • case + как реализовать равный или меньше или больше в случае синтаксиса
  • bash + как хранить скрипты оболочки
  • Шаблон Грепа в ksh
  • 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 )

    Interesting Posts

    Судо Су автоматический вход

    Создание контейнеров LXD на машине без подключения к Интернету

    Передача перетаскивания ssh x11

    Как остановить открытие файла в LibreOffice из изменения даты Дата изменения

    Настройка сервера Apache для CentOS по умолчанию для определенного порта для ExpressJS и узла

    Spanning RAID на SSD и механическом HD

    Где gnome-session / gnome-shell хранит свою конфигурацию?

    Что является переопределением опции установки разрешений fstab?

    top -bn1 не дает правильного использования ЦП

    Отключите Энергоэффективный Ethernet (eee) aka Green Ethernet

    Можно ли заставить okular не мигать при перезагрузке файла?

    Почему не ставится elinks в фоновом режиме, а затем возобновляется с `fg` работать надежно?

    Как автоматически добавить ключевой файл и кодовую фразу в ssh-agent?

    Не удалось использовать ssh-copy-id – mktemp: не удалось создать файл через шаблон

    Поддельный серийный номер USB-устройства

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