10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
1 | |
Регулярка findstr отрабатывает на одном файле, но не отрабатывает на другом06.01.2018, 12:07. Показов 4626. Ответов 18
Метки нет (Все метки)
Приветствую !
Сижу, ругаюсь матом в голос потому, что регулярка срабатывает на одном текстовом файле но упорно игнорирует другой. А стало быть я жестко туплю где то. Пример: Код
type lyrics.txt | findstr /r /c:"^I .*and$" type lyrics.txt | findstr /r /c:"^I.*y$" type lyrics.txt | findstr /r /c:".*ful$" Код
D:\Desktop>type lyrics.txt | findstr /r /c:"^I .*and$" I only know they tell me that love is grand, and D:\Desktop>type lyrics.txt | findstr /r /c:"^I.*y$" It's wonderful, so they say D:\Desktop>type lyrics.txt | findstr /r /c:".*ful$" They say that falling in love is wonderful The thing that's known as romance is wonderful А теперь жесть: Код
D:\Desktop>type debug.txt | findstr /r /c:"^Microsoft.*" Microsoft (R) Windows Debugger Version 10.0.10586.567 AMD64 D:\Desktop>type debug.txt | findstr /r /c:".*AMD64$" D:\Desktop>type debug.txt | findstr /r /c:"$.*AMD64" D:\Desktop>type debug.txt | findstr /r /i /c:"$.*AMD64" D:\Desktop>type debug.txt | findstr /r /i /c:".*AMD64$" D:\Desktop>type debug.txt | findstr /r /c:"^M.*" Microsoft (R) Windows Debugger Version 10.0.10586.567 AMD64 Mini Kernel Dump File: Only registers and stack trace are available Machine Name: Module name Error MODULE_NAME: nt_wrong_symbols D:\Desktop>type debug.txt | findstr /r /i /c:".*e$" D:\Desktop> И в файле lyrics.txt ему, значит, все нравится, а в файле debug.txt нет. И да, кодировки и окончания у файлов одинаковые. А затеял все это для того, чтобы избавиться от такого вот безобразия из debug.txt Код
************************************************************************* *** *** *** Either you specified an unqualified symbol, or your debugger *** По идее это все прекрасно должно урезаться вот таким вот образом (три звезды, три пробела, любые символы в любом количестве, три пробела, три звезды): Код
type debug.txt | findstr /v /r /c"^\*\*\* .* \*\*\*$" Код
D:\Desktop>type debug.txt | findstr /v /r /c"^\*\*\* .* \*\*\*$" FINDSTR: /c пропускается FINDSTR: /^ пропускается FINDSTR: /\ пропускается FINDSTR: /* пропускается FINDSTR: /\ пропускается FINDSTR: /* пропускается FINDSTR: /\ пропускается FINDSTR: /* пропускается FINDSTR: / пропускается FINDSTR: / пропускается FINDSTR: / пропускается FINDSTR: /. пропускается FINDSTR: /* пропускается FINDSTR: / пропускается FINDSTR: / пропускается FINDSTR: / пропускается FINDSTR: /\ пропускается FINDSTR: /* пропускается FINDSTR: /\ пропускается FINDSTR: /* пропускается FINDSTR: /\ пропускается FINDSTR: /* пропускается FINDSTR: /$ пропускается FINDSTR: Ошибка в командной строке Попытка записи в несуществующий канал. D:\Desktop> PS Смысл type вместо передачи файла в том, что это все делается для фильтрации вывода консольной программы.
0
|
06.01.2018, 12:07 | |
Ответы с готовыми решениями:
18
VBS-скрипт отрабатывает на одном компе, и не работает на другом Результат запроса отрабатывает в консоли, но не отрабатывает в модуле POST в jsp файле не отрабатывает Регулярка работает на одном хостинге, а на другом нет |
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 12:26 [ТС] | 3 |
0
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 15:28 [ТС] | 5 |
Garry Galler, я пробовал копировать часть содержимого в новый файл с тем же результатом, так что я даже и не знаю ...
0
|
06.01.2018, 16:10 | 6 | |||||
vavun,
Просто пример вашего файла прикрепите - тогда будет ясно имеются ли в нем какие-то отличия, не позволяющие findstr определить концы строк. Вы же понимаете, что:
Добавлено через 4 минуты P.S. Files.zip увидел не сразу. Посмотрим. Добавлено через 21 минуту Да, занятная штука - когда копируешь содержимое файла debug.txt в другой файл - получается файл с которым findstr уже "дружит" :-) То есть не работало?
0
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 16:35 [ТС] | 7 |
Нет =)
А в чем, собсно, проблема в моим файлом то ? Я не осилил ее найти. Да и хз что искать, если два файла свежесозданных лежат рядом, один работает другой нет =( Добавлено через 19 минут Жесть. Решил проверить непосредственно на выдаче программы с которой планировалось работать. Вот такой код Код
%Very long command line with arg%| findstr /r /v /c:"^\*\*\* .* \*\*\*" Я уж было подумал, что с ума схожу, я эту регулярку на файле несколько раз проверял - не работала. Отсалось отфильтровать строки полностью состоящие из звездочек. я так и не понял, как это сделать Ну и понять, что не так с файлом =)
0
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 16:45 [ТС] | 9 |
Я в поисках нюанса пробовал удалять символы, кроме букв и цифр из текста. Больше не знаю даже что пробовать
0
|
06.01.2018, 17:51 | 10 |
Тут нужно наоборот - добавлять :-)
Моя первая гипотеза оказалась верной: вместо последовательности \0xD\0xA (\r\n) - программа создающая исходный файл debug.txt записывает в качестве конца строк только \0xA (\n). Исходный файл в WinHex редакторе (после слова reserved идет подряд три перевода строки) Тот же файл, если просто скопировать его содержимое в текстовом редакторе в новый файл: Со вторым файлом findstr работает.
1
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 17:54 [ТС] | 11 |
Garry Galler, спасибо, интересно =)
Вот findstr и мучался с концами ... Добавлено через 29 секунд Только вот чего я не пойму: я же тоже копировал содержимое в новый файл.
0
|
06.01.2018, 18:08 | 12 |
У меня текстовый редактор SynWrite - я думаю, что он автоматом (надо настройки глянуть) при выделении содержимого и вставке в новый файл делает автозамену переводов строк в стиле UNIX (\n) или MAC (\r) на стиль windows (\r\n).
0
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 18:12 [ТС] | 13 |
А у меня простой akelpad. И он на обоих файлах показывал и кодировку одинаковую и win окончания строк.
Добавлено через 2 минуты Подскажите лучше, как выражение сделать для удаления строки состоящей полностью из звездочек ? Я все пытаюсь подставить какой-нибудь числовой ... даже не знаю что "числовой" применительно к findstr. Чтоб не строку из звездочек городить, а задать либо минимальное их число для "попадания" строки, или есть другой более красивый способ находить последовательности символов.
0
|
06.01.2018, 18:14 | 14 |
И у меня SynWrite также показывал (спец. символами), что окончания строк в файлах одинаковые.
То ли врал, то из-за автозамены это уже было правдой. Поэтому только WinHex все объяснил.
1
|
Любознательный
5668 / 1683 / 314
Регистрация: 10.03.2016
Сообщений: 3,824
|
|
06.01.2018, 18:50 | 15 |
Дык тут уже многое зависит от редактора, как он воспринимает формат новой строки...
Вообще 0Dh - формат новой строки для MAC-ов, а для Win, это именно 0D0Ah Вот я и говорю, что cmd, findstr - устаревающее ПО, а в особенности для работы с регэкспами...
0
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 18:56 [ТС] | 17 |
0
|
10582 / 5545 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
|
|
06.01.2018, 19:03 [ТС] | 19 |
0
|
06.01.2018, 19:03 | |
06.01.2018, 19:03 | |
Помогаю со студенческими работами здесь
19
Можно ли на javascript'e в одном js-файле использовать функции, описанные в другом js-файле? Как передать значение переменной PHP в одном файле в переменную JS в другом файле? Сравнение слов в одном файле со словами в другом файле Сравнение слов в одном файле со словами в другом файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |