FINDSTR: слишком длинная строка
Windows FINDSTR
команда полезна для просеивания больших объемов данных; он отфильтровывает строки текста, которые соответствуют или не соответствуют указанному шаблону или строке (например, GNU / BSD grep
).
Но он отказывается выводить строки длиннее определенной длины. Есть ли (нативная) альтернатива, исправление или обходной путь?
2 ответа
Лучшей встроенной альтернативой будет PowerShell Select-String (или его псевдоним sls
)
Select-String
Командлет ищет текст и текстовые шаблоны во входных строках и файлах. Ты можешь использоватьSelect-String
похожий наgrep
в UNIX илиfindstr.exe
в винде.
Просто знайте, что Select-String
выполняет поиск без учета регистра по умолчанию, в отличие от большинства альтернатив
FINDSTR SS64 - побеги и ограничения длины говорит:
Пределы длины линии
Файлы, указанные в качестве аргумента командной строки или через
/F:FILE
Опция не имеет известного ограничения длины строки. Поиск был успешно выполнен для файла размером 128 МБ, который не содержал ни одного. Данные по конвейеру и перенаправленный ввод ограничены 8191 байтами на строку. Этот лимит является "особенностью" FINDSTR. Это не присуще трубам или перенаправлению. FINDSTR, использующий перенаправленный ввод stdin или piped, никогда не будет соответствовать ни одной строке размером> = 8 Кбайт. Строки>=8k генерируют сообщение об ошибке для stderr, но значение ERRORLEVEL по-прежнему равно 0, если строка поиска найдена хотя бы в одной строке хотя бы одного файла.
Кредиты:
Дейв Бенхэм - Список недокументированных функций и ограничений FINDSTR от StackOverflow
Если длина больше 255, просто включите опцию
/L
, это сработает
findstr findstr /V /L /G:%processfolder%%previousfile% %incoming%%incomingfile%