Поиск слов по маске
Увидел забавную картинку и задался вопросом.
Как в смд искать слова по маске? Посмотреть картинку
Тут зашифровано слово ХИТРЕЦ. Соответственно из текстового файла со списком всех русских слов хочу по маске ?и???ц найти слово хитрец Я так понял что нативные find и findstr так не умеют. Какой программой под смд можно найти слова по маске? Может grep умеет? |
Цитата:
Код:
type "C:\Мои проекты\0296\0001.txt" | findstr.exe /i /r /c:"^[а-яё]и[а-яё][а-яё][а-яё]ц$" Но лучше сие делать на WSH/PoSH, где есть полноценные (ну, или почти полноценные) регулярные выражения. |
Паразитирую на решении Iska
Код:
@Echo Off |
Powershell:
Код:
$dict = gc C:\temp\slovar\zdf-win.txt дидоец ливиец лидиец лионец миасец мидиец пиреец сиамец сиенец хищнец |
DJ Mogarych, есть ещё одно - пИ..еЦ :)
ateka, я не знаю для чего вам это нужно, но есть программка для кроссвордов, которая делает всё тоже самое и даже больше. Cross+A. Имеет базу ~100000 слов с их описаниями. Вот чо он выдал: КИББУЦ (кибуц) кооперативное сельскохозяйственное предприятие в государстве Израиль КИТАЕЦ (самоназвание - хань, ханьжэнь) представитель основного населения Китая КИШНЕЦ (кориандр) растение семейства зонтичных (сельдерейных), медонос ЛИВИЕЦ житель Ливии ЛИВШИЦ российский актёр, создатель "Радионяни" совместно с Левенбуком; русский поэт, футурист (1886-1939) ЛИДЕРЦ в венгерской мифологии злой дух, появляющийся на болотах в виде блуждающего огонька ЛИПШИЦ французский художник, выходец из Литвы (1891-1973) ЛИФШИЦ братья, российские физики-теоретики: (1915-1985) и (1916/17-82); российский литературовед (1905-1983) СИАМЕЦ житель Сиама СИРИЕЦ житель Сирии ХИТРЕЦ хитрый человек ХИЩНЕЦ насекомое, клоп ЧИЛИЕЦ житель Чили ЧИСТЕЦ медоносное травянистое растение семейства губоцветных |
Это понятно, но таких слов в словари обычно не добавляют.
Цитата:
Лучше уж Пауэршеллом. Тем более, что у моих словарей 169037 уникальных слов. Код:
(gc C:\temp\slovar\zdf-win.txt,C:\temp\slovar\lop1v2.txt |sort -Unique).count |
Iska,megaloman, Увы не ищет. Не уважает подстановки [а-яё].
Если они идут подряд то findstr их игнорирует. DJ Mogarych, а можно ванлайнер? Я бы его в батник засунул. |
если в файле только русские слова, то вместо шаблона конкретных букв можно писать литерал произвольного символа - точку
Код:
findstr /i /r /c:"^.и...ц$" vocabulary.txt Цитата:
Код:
Select-String '^.и...ц$' vocabulary.txt -Encoding OEM | Select-Object -ExpandProperty Line Цитата:
|
Цитата:
У меня — ищет
|
ateka,
Цитата:
|
Цитата:
Код:
powershell -command "(gc C:\temp\slovar\zdf-win.txt) -match '^\wи\w{3}ц$'" |
Я потратил два часа на перебор всех вариантов и получил следующее.
В моей конфигурации ищет только если словарь в utf-8. Возможно это из за включенной настройки: Картинка
Я сохранял батники в 866. Конвертировал словари во всевозможные кодировки. Но findstr на регулярку плевать хотела. В любом случае проблема решена. Слава ПоШ! Всем большое, большое спасибо. |
Цитата:
|
Цитата:
В своё время у самого были словари ~800000 словов. Только они "брутиловские" и в них много лишнего. Цитата:
|
Цитата:
Там нужен был json а он по определению юникод. И раньше приходилось гонять вм с линуксом. Цитата:
https://github.com/danakt/russian-words |
Вложений: 1
ateka, Если надо ехать, а не шашечки, то проще пареной репы загрузить текстовый файл словаря (загружается нормально файл и с 866, и с 1251 и с UTF8 кодировкой), и использовать стандартное средство - фильтр. И не надо никаких иных приблуд. И интерфейс внятный и минимум затрат при вводе новой маски в поиск.
Прикрепляю Excel-файл с загруженным отсюда для примера словарем. Он был в UTF8. |
Цитата:
|
Вложений: 1
ateka,
Цитата:
Цитата:
Код:
@Echo Off |
Цитата:
Я скачал Зализняка и Лопатина, и для этой темы грузил их оба. |
Цитата:
Впрочем ничего страшного, есть PoSh, есть Эксель. Эксель для меня даже удобней. Ещё раз спасибо за помощь. |
ateka, а запустите-ка интерпретатор команд "%comspec%" /k и выполните в нём команду chcp — что покажет?
|
Iska, 65001
Но принудительная смена кодировки результата не даёт. В 866 принципиально не ищет. |
|
Код:
chcp 866 |
ateka, при этом кодировка самого пакетного файла также OEM/866?
|
Вложений: 1
ateka,
Цитата:
|
|
|
alpap, Батники в 866. Гарантированно. Оболочка по умолчанию в 65001. Никак 2020 на дворе.
|
Вложений: 1
ateka,
Попробуйте VBS.
Код:
'FileIn = "D:\CMD_Forum\Box_In\vocabularyUTF8.txt" А вообще-то нестандартные настройки рано или поздно выходят боком |
Цитата:
Картинко
Ищет хорошо но обнаружилась проблема. Когда я ему подсунул словарь побольше скрипт без признаков жизни по 10 минут думал а потом только показывал гуи. В общем если ещё раз возникнет нужда искать по маске буду использовать ПоШ. Ну или МС адаптирует findstr для utf8. |
Цитата:
Цитата:
Цитата:
|
Iska, что-то надо в консерватории поменять, и скрипт и словарь я отдавал в архиве в нужной кодировке, а на экране сплошная непристойность. Есть паллиатив - сделать сообщения на английском, но, при русском словаре это не фэншуйно.
ateka, а побольше - это сколько? |
|
|
ateka, упакуйте его в архив и выложите на облако.
|
Цитата:
Конвертировал Код:
iconv.exe -f cp1251 -t UTF-8 russian.txt >.\Result\UTF-8.txt |
ateka, а зачем Вы вообще конвертировали файл, который изначально шёл в ANSI/1251?! Не конвертируйте. И попросите коллегу megaloman убрать конвертацию ANSI→UTF8 из кода.
Ну, и: Цитата:
|
Цитата:
Кстати и решение с экселем было отличным. Эксель самый быстрый и удобный. Цитата:
Но ждать приходиться больше десяти минут. Данная технология на моей машинке ленится. Цитата:
Как я уже указывал я менял системные настройки на UTF8 суппорт. |
Вложений: 1
Цитата:
Не надо просить!!! Уже сделал
Код:
FileIn = "Z:\Soft_Arc\Словарь\1251.txt" Кстати, findstr и словарь в 866 кодировке работает в 3 раза быстрее. Мой Excel это кол-во строк не съел. Не знаю, может в настройках можно нашаманить. |
Цитата:
Цитата:
|
Цитата:
А я менял здесь картинка
Это для всех систем видимо. На самом деле я доволен. Ещё пару обновлений и сделают как надо. Я на винде с доса и на десятку молюсь. Так или иначе все проблемы решаемы. |
|
Цитата:
|
Время: 21:26. |
Время: 21:26.
© OSzone.net 2001-