Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

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

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
790



Joined: 09 Aug 2008
Posts: 309

Post (Separately) Posted: Tue Oct 10, 2023 14:10    Post subject: Сравнение по содержимому: кроме заданных разделителей Reply with quote

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

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

Cuda уехал text, он был ещё вчераа...
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 178

Post (Separately) Posted: Sun Apr 21, 2024 01:01    Post subject: Reply with quote

790
Кажется, я в программе Beyond Compare видел подобный функционал.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10266
Location: Россия, Саратов

Post (Separately) Posted: Sun Apr 21, 2024 06:58    Post subject: Reply with quote

790
1. Произвольные начальные символы можно исключить из сравнения парой экспериментальных ключей CompareSkipFirstL (количество игнорируемых символов в файле слева) и CompareSkipFirstR (их количество в файле справа). Подробности в справочнике по ключам, в официальной справке TC функция (хотя и старая) до сих пор не документирована, поскольку недостаточно доработана. Есть также свежий ключ CompareSkipLineNumbers, но он про другое, там только начальные цифры не учитываются (тут подробности по-русски вскоре будут в более новой версии справочника).
2. Что касается метода 3, то в ключе CompareResyncSeparators имеется по умолчанию определённый набор символов-разделителей (см. тот же справочник). Можно попробовать явным образом указать его значением только то, что вам нужно, не включая ненужное.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 239

Post (Separately) Posted: Sun Apr 21, 2024 10:05    Post subject: Reply with quote

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

"Заменить" оставить пустое. Будет пропускать при сравнении строки с комментариями вида " /* comment".
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 178

Post (Separately) Posted: Sun Apr 21, 2024 11:17    Post subject: Reply with quote

Сейчас проверил. К Beyond Compare можно скачать отдельный шаблон формата .css:
https://www.scootersoftware.com/kb/moreformats?version=4&platform=Windows
Судя по тому, что комментарии на вкладке Grammar к этому формату обозначены как Comment=Text from /* to */, то должно все работать, но я не проверял.
Back to top
View user's profile Send private message
790



Joined: 09 Aug 2008
Posts: 309

Post (Separately) Posted: Mon Apr 22, 2024 16:36    Post subject: Reply with quote

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

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

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

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

Cuda уехал text, он был ещё вчераа...
Back to top
View user's profile Send private message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 239

Post (Separately) Posted: Tue Apr 23, 2024 01:11    Post subject: Reply with quote

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

Должно помочь. Получается, просто перед сравнением заменяется «/* » на ничего, а соответственно эта строка становится строкой без комментария, и если она равна в таком виде со строкой в другом файле, то выделяться не будут.
Back to top
View user's profile Send private message
790



Joined: 09 Aug 2008
Posts: 309

Post (Separately) Posted: Tue Apr 23, 2024 14:07    Post subject: Reply with quote

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

Cuda уехал text, он был ещё вчераа...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group