Сравнение по содержимому: кроме заданных разделителей

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
790
Сообщения: 357
Зарегистрирован: Сб авг 09, 2008 18:08

Сравнение по содержимому: кроме заданных разделителей

Сообщение 790 »

Сравнение по содержимому: 2 текстовых файла таблицы стилей css. Там есть строки "закоментированные", начинаются с "/* " и такие же "незакоментированные", начинаются с @. Если разница только в наличии "/* " в начале строки, то такие строки меня не интересуют.
Отсюда вопрос:
1. Как искать различия в любом месте строки, кроме тех строк, у которых единственное различие только в "/* " в начале строки.
2. Или, если включить "Метод 3: Находить ... возле заданных разделителей", то как редактировать этот список разделителей, чтобы различие возле этих самых разделителей НЕ учитывалось, т.е. как бы наоборот.

Извиняюсь за спутанные объяснения, мне пока ещё не указали на нужные термины...
TC 11.58 32/64, Win10x64

Cuda уехал text, он был ещё вчераа...
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

790
Кажется, я в программе Beyond Compare видел подобный функционал.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

790
1. Произвольные начальные символы можно исключить из сравнения парой экспериментальных ключей CompareSkipFirstL (количество игнорируемых символов в файле слева) и CompareSkipFirstR (их количество в файле справа). Подробности в справочнике по ключам, в официальной справке TC функция (хотя и старая) до сих пор не документирована, поскольку недостаточно доработана. Есть также свежий ключ CompareSkipLineNumbers, но он про другое, там только начальные цифры не учитываются (тут подробности по-русски вскоре будут в более новой версии справочника).
2. Что касается метода 3, то в ключе CompareResyncSeparators имеется по умолчанию определённый набор символов-разделителей (см. тот же справочник). Можно попробовать явным образом указать его значением только то, что вам нужно, не включая ненужное.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Monarch-LFV
Сообщения: 363
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

790
Есть еще программа Compare it! (аналог Beyond Compare).
Там можно задать регулярным выражением разные варианты для исключения. В вашем случае примерно так:

Код: Выделить всё

^\s*/\*.*
"Заменить" оставить пустое. Будет пропускать при сравнении строки с комментариями вида " /* comment".
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Сейчас проверил. К Beyond Compare можно скачать отдельный шаблон формата .css:
https://www.scootersoftware.com/kb/more ... rm=Windows
Судя по тому, что комментарии на вкладке Grammar к этому формату обозначены как Comment=Text from /* to */, то должно все работать, но я не проверял.
790
Сообщения: 357
Зарегистрирован: Сб авг 09, 2008 18:08

Сообщение 790 »

Avada Спасибо.
1. С CompareSkipFirstL так не работает, потому что строки, которые начинаются с @ не имеют 3х пробелов вместо "/* " перед собой:

/* @text
/* @text
@text
/* @text
@text
@text

CompareSkipFirstL просто уберёт первые три знака во всех строках.

2. Также не работает.
Меня интересуют строки, где произошли какие-то изменения в text, чтобы когда я ставлю галочку "Только различия", показывались только эти строки. Если в строке разница ТОЛЬКО в наличии/отсутствии "/* ", то такие строки не интересны, потому что это я сам делал эти изменения.
TC 11.58 32/64, Win10x64

Cuda уехал text, он был ещё вчераа...
Аватара пользователя
Monarch-LFV
Сообщения: 363
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

790
С уточнением стало понятнее. То, о чем я писал выше, но с регуляркой:

Код: Выделить всё

^\s*/\*\s*
Должно помочь. Получается, просто перед сравнением заменяется «/* » на ничего, а соответственно эта строка становится строкой без комментария, и если она равна в таком виде со строкой в другом файле, то выделяться не будут.
790
Сообщения: 357
Зарегистрирован: Сб авг 09, 2008 18:08

Сообщение 790 »

Monarch-LFV
Да, спасибо, это работает. Но... не будем здесь обсуждать посторонний софт ;) И всё-таки хотелось бы делать это в ТС.
TC 11.58 32/64, Win10x64

Cuda уехал text, он был ещё вчераа...
Ответить