Вот как я мог бы это сделать, если вы можете использовать Perl 5.10
.
qr/ (?(?: [^=,\\] | (?&escape) )++ # Prevent null keys ) \s*+ = \s*+ (? (?"ed) | (?: [^=,\s\\] | (?&escape) )++ # Prevent null value ( use quotes for that ) ) (?(DEFINE) (? \\.) (? " (?: (?&escaped) | [^"\\] )*+ " ) ) /x
Доступ к элементам можно получить через %+
.
perlretut
очень помог в создании этого ответа.
На самом деле, кажется, есть еще один вариант (который я заметил недавно, когда столкнулся с проблемой, описанной выше):
git diff --no-index <file1> <file2>
# output to console instead of opening a pager
git --no-pager diff --no-index <file1> <file2>
Если у вас есть Git (который вы уже могли использовать в любом случае) Тогда вы сможете использовать его для сравнения, даже если сами файлы не находятся под контролем версий. Если по умолчанию эта функция не включена для вас, то включение поддержки цвета здесь, по-видимому, будет значительно проще, чем некоторые из ранее упомянутых обходных путей.
Я использую grc
(Generic Colouriser), который позволяет раскрасить вывод ряда команд, включая diff
.
Это скрипт на python, который можно обернуть вокруг любой команды. Таким образом, вместо вызова diff file1 file2
, вы бы вызывали grc diff file1 file2
для просмотра цветного вывода. Я добавил псевдонимы diff
- grc diff
, чтобы было легче.
Поскольку wdiff
принимает аргументы, указывающие строку в начале и конце как вставок, так и удалений, вы можете использовать цветовые последовательности ANSI в качестве этих строк:
wdiff -n -w Например, это вывод сравнение двух файлов CSV:
Пример из https://www.gnu.org/software/wdiff/manual/ html_node / wdiff-Examples.html
\033[30;41m' -x Например, это вывод сравнение двух файлов CSV:
Пример из https://www.gnu.org/software/wdiff/manual/ html_node / wdiff-Examples.html
\033[0m' -y Например, это вывод сравнение двух файлов CSV:
Пример из https://www.gnu.org/software/wdiff/manual/ html_node / wdiff-Examples.html
\033[30;42m' -z Например, это вывод сравнение двух файлов CSV:
Пример из https://www.gnu.org/software/wdiff/manual/ html_node / wdiff-Examples.html
\033[0m' file1 file2
Например, это вывод сравнение двух файлов CSV:
Пример из https://www.gnu.org/software/wdiff/manual/ html_node / wdiff-Examples.html
На последних версиях мерзавца на Ubuntu можно включить выделение разности с:
sudo ln -s /usr/share/doc/git/contrib/diff-highlight/diff-highlight /usr/local/bin
sudo chmod a+x /usr/share/doc/git/contrib/diff-highlight/diff-highlight
И затем добавляющий это к Вашему .gitconfig
:
[pager]
log = diff-highlight | less
show = diff-highlight | less
diff = diff-highlight | less
возможно, что сценарий расположен где-то в другом месте в других дистрибутивах, можно использовать locate diff-highlight
для обнаружения где.
С в летучая мышь команда:
diff file1 file2 | bat -l diff