Меню Рубрики

Windows findstr регулярные выражения

Команда FINDSTR

&nbsp &nbsp Команда FINDSTR используется для поиска текстовой строки в одном или нескольких файлах с использованием регулярных выражений. По сравнению с командой FIND данная команда позволяет выполнять значительно более гибкий поиск в соответствии с правилами, задаваемыми в качестве параметров командной строки. Регулярные выражения ( regular expressions ) — это своеобразный язык с применением обычных и специальных символов, задающих шаблон и алгоритм поиска. Обычные символы ( литералы ) — это привычные текстовые знаки — буквы, цифры, знаки препинания и т. п. Специальные символы ( метасимволы ) — это элементы записи правил и параметров обработки для обычных символов. Так, например, символ точка . означает «Любой символ», квадратные скобки — набор из заключенных в них символов, последовательность \d — любой цифровой символ, \D — любой не цифровой символ.

При необходимости обработки метасимволов как обычных элементов текста, в регулярных выражениях используется экранирующий символ — обратная косая черта \ . Запись \[ означает обычный символ раскрывающейся квадратной скобки, а не метасимвол для начала набора. Для экранирования нескольких метасимволов используется последовательность :

\Q . . . набор метасимволов . . .\E

Обратная косая черта перед обычным символом означает, что он интерпретируется как служебный символ:

\s — соответствует символу пробела.

При использовании в регулярных выражениях, строчные и заглавные символы различаются.

\S — любой символ, не пробел.

Формат командной строки FINDSTR:

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл] [/C:строка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]] строки [[диск:][путь]имя_файла[ . ]]

/B — Искать образец только в началах строк.
/E — Искать образец только в конце строк.
/L — Поиск строк дословно.
/R — Поиск строк как регулярных выражений.
/S — Поиск файлов в текущей папке и всех ее подпапках.
/I — Определяет, что поиск будет вестись без учета регистра.
/X — Печатает строки, которые совпадают точно.
/V — Печатает строки, не содержащие совпадений с искомыми.
/N — Печатает номер строки, в которой найдено совпадение, и ее содержимое.
/M — Печатает только имя файла, в которой найдено совпадение.
/O — Печатает найденный строки через пустую строку.
/P — Пропускает строки, содержащие непечатаемые символы.
/OFF[LINE] — Не пропускает файлы с установленным атрибутом «Автономный».
/A:цвета — Две шестнадцатеричные цифры — атрибуты цвета. См. «COLOR /?»
/F:файл — Читает список файлов из заданного файла (/ для консоли).
/C:строка — Использует заданную строку как искомую фразу поиска.
/G:файл — Получение строк из заданного файла (/ для консоли).
/D:список_папок — Поиск в списке папок (разделяются точкой с запятой).
строка — Искомый текст.
[диск:][путь]имя_файла — Задает имя файла или файлов.

Для разделения нескольких искомых строк, если аргумент не имеет префикса /C, используется пробел. Например,

FINDSTR «Привет мир» file.txt поиск «Привет» или «мир» в файле file.txt

FINDSTR /C:»Привет мир» file.txt поиск строки «Привет мир» в файле file.txt.

Краткую справку по использованию команды FINDSTR можно получить при использовании ключа /? :

Кроме параметров командной строки, справка дополнена краткой сводкой по синтаксису регулярных выражений:

. — Любой символ.
* — Повтор: ноль или более вхождений предыдущего символа или класса
^ — Позиция в строке: начало строки
$ — Позиция в строке: конец строки
[класс] — Класс символов: любой единичный символ из множества
[^класс] — Обратный класс символов: любой единичный символ из дополнения
[x-y] — Диапазон: любые символы из указанного диапазона
\x — Служебный символ: символьное обозначение служебного символа x
\ — Позиция в слове: в начале слова
xyz\ > — Позиция в слове: в конце слова

За полной информацией о регулярных выражениях FINDSTR обратитесь к доступной интерактивной документации.

Примеры использования FINDSTR :

findstr /M 1 %temp%\*.* — отобразить список файлов ( ключ /M ), в которых содержатся цифры ( набор 0-9 ) из каталога временных файлов ( определяется %TEMP% )

findstr /P /I «Error» %temp%\*.* — Отобразить строки, содержащие слово Error . Поиск строк выполнять без учета регистра символов ( ключ /I ), строки, содержащие непечатаемые символы, не отображать ( ключ /P ) .

findstr /M /I /C:»network error» %windir%\system32\*.exe — отобразить список исполняемых файлов из системного каталога Windows\system32, в которых встречается строка «network error «

findstr /s /I /A:f4 /O /C:»failed» C:\*.log — отобразить строки файлов с расширением log , содержащие слово failed . Имя файла и смещение строки относительно его начала отображать красными символами на белом фоне ( ключ /A:F4 ). Поиск выполняется во всех файлах .log корневого каталога диска C: и всех его подкаталогов ( ключ /S )

findstr /A:FC /N /s /i «\ — отобразить строки, содержащие слово, начинающееся с » comput» ( compute, computer, computers и т. д. ), а также имена файлов и номера строк ( ключ /N ).

findstr /A:FC /N /s /i «\ — как и в предыдущем случае, но ищется строка, содержащая слово, начинающееся с подстроки правильн . При использовании символов русского языка нужно учитывать их кодировку, поскольку коды символов в DOS- и Windows — кодировке различаются. В командных файлах, когда необходимо выполнять поиск строк, содержащих символы национального алфавита, шаблон для поиска должен быть представлен в той же кодировке, что и содержимое файла. Можно использовать переключение кодовой страницы перед поиском:

REM переключаемся на Windows — кодировку
chcp 1251
REM Выполняем поиск
findstr /A:FC /N /s /i «\

Источник

Findstr

Поиск образцов текста в файлах с использованием регулярных выражений.

Синтаксис

Параметры

Заметки

Команда findstr способна выполнять точный поиск текста в любом текстовом файле или файлах формата ASCII. Однако иногда имеется только часть информации, которая должна быть найдена, или требуется найти информацию в широком диапазоне. В таких случаях команда findstr предоставляет мощную возможность поиска с использованием регулярных выражений.

В противоположность точному заданию строки символов для поиска, регулярные выражения позволяют задать образец текста. Для задания образца используются литералы и метасимволы. Каждый символ, который не имеет специального значения в регулярных выражениях, рассматривается как литерал и должен точно совпасть при поиске. Например, буквы и цифры являются литеральными символами. Метасимволы это символы со специальным значением (оператор или разделитель) в регулярных выражениях.

В приведенной ниже таблице перечислены метасимволы, допустимые для команды findstr.

Символ Значение
. Подстановочный знак: любой символ
* Повтор: ноль или более предшествующих символов или классов символов.
^ Позиция строки: начало строки
$ Позиция строки: конец строки
[класс] Класс символа: любой символ из множества
[^класс] Инвертированный класс: любой символ из множества
[xy] Диапазон: любой символ из диапазона
\x Исключение: использование метасимвола x в качестве литерала
\ Позиция слова: конец слова

Специальные символы в регулярных выражениях дают наилучший результат при совместном использовании. Например, при комбинации символа подстановки (.) и повторителя (*) совпадает любая строка символов:

Используйте следующее выражение как часть более объемного выражения, которое совпадает со строкой, начинающейся с «b» и оканчивающейся на «ing»:

Примеры

Для отделения строк поиска друг от друга следует использовать пробелы, кроме тех случаев, когда задан ключ /c. Для поиска слова «hello» или «there» в файле x.y введите следующую каманду:

Для поиска словосочетания «hello there» в файле x.y введите следующую каманду:

Для поиска всех слов «Windows» (с первой заглавной буквой W) в файле Proposal.txt может быть использована следующая команда:

Для поиска в каждом файле текущего каталога и в файлах всех подкаталогов слова «Windows» без учета строчных и заглавных букв может быть использована следующая команда:

Для поиска всех строк, содержащих слово «FOR», перед которым идет несколько пробелов (чтобы найти в программе оператор цикла), с выводом номера каждой строки можно использовать команду:

Если требуется найти несколько разных наборов символов в нескольких файлах, можно создать текстовый файл, каждая строка которого содержит образец для поиска. Также можно задать точный список файлов, если поиск будет производиться в текстовых файлах. Для использования файла Finddata.txt, содержащего образцы для поиска, файла Filelist.txt, содержащего список файлов, в которых будет производиться поиск, и записи результатов работы программы в файл Results.out служит следующая команда:

Предположим, необходимо найти каждый файл в текущем каталоге и его подкаталогах, содержащий слово «computer» без различия строчных и заглавных букв. Для вывода списка таких файлов можно использовать следующую команду:

Теперь, предположим, требуется найти не только само слово «computer», но и все другие слова, начинающиеся с тех же букв, таких как «compliment» и «compete». Введите следующую команду:

Источник

Утилиты find и findstr — поиск через командную строку

В этой статье мы с вами рассмотрим утилиту findstr и find командной строки, которые позволяет производить поиск строк в текстовом документе. Поиск через командную строку можно также настроить, используя шаблоны, которые настраиваются на основе регулярных выражений, но сперва, немного лирики…

В былые времена, когда я был еще полным чайником в компьютерах, мне пришлось услышать про волшебные “виртуальные диски”. В то время размер моего винчестера составлял 2 гигабайта, и на счету был каждый байт, я каждую картинки сжимал для экономии места, зато в системе был один фильм и одна игра “Age Of Empires 2”, я ее уже раз сто проходил. Так вот, я почему то решил, что “виртуальный диск”, это дополнительная память, которая может появится из воздуха… Где то два дня пытался всячески установить через Диспетчер устройств еще один винт на 500 метров, при том, что такого оборудования в системном блоке и подавно не было…

Утилита find командная строка

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] «искомые_значения» [[диск:][путь]имя_файла[ . ]]

И так, смотрим на описание ключей:

[/V] – произвести вывод всех строк, которые НЕ содержат заданной.

[/C] – выводится только общее число строк, содержащих заданную.

[/N] – Вывод номеров отображаемых строк.

[/I] – Поиск без учета регистра символов.

[/OFF[LINE]] – Не пропускать файлы с установленным атрибутом «Автономный».

«искомые_значения» – собственно, строчка, поиск которой производится из командной строки Windows

[[диск:][путь]имя_файла[ . ]] – тут мы прописываем один или несколько имен документов, в которых нужно произвести поиск через командную строку, можно использовать подстановочные знаки.

Хорошо, теперь давайте попробуем написать несколько примеров.

Создадим на диске D:\ папку TEST, в который благополучно поместим три файла с расширениями .pdf, .txt и .mf. Для начала попробуем найти слово «const» во всех документах с расширением txt:

FIND «const» D:\TEST\*.txt

На выходе мы получим следующую информацию:

———- D:TESTSEND_MAIL_DATA.VBS.TXT
соnst toMSg =»to@yandex.ru» ‘получатель
соnst fromMSg =»from@gmail.com» ‘отправитель
соnst subjMsg = «Администратор» ‘субъект
соnst sndUsr =» login» ‘логин
соnst sndPswd =»password» ‘пароль
cоnst smtpSrvr = «smtp.gmail.com» ‘почтовый сервер

———- D:TESTSEND_MAIL_TEXT.VBS.TXT
cоnst toMSg =»to@yandex.ru»
cоnst fromMSg =»from@gmail.com»
cоnst subjMsg = «Администратор»
cоnst sndUsr =» login»
сonst sndPswd =»password»
сonst smtpSrvr = «smtp.gmail.com»

Как видим, мы получили список всех тех строчек, где встречается искомое слово.

Теперь попробуем сделать поиск через командную строку слова “samsung” во всех pdf файлах:

FIND «samsung» D:\TEST\*.pdf

Слово «samsung» встречается в одном документе, но, утилита FІND найти его не смогла, стоит обратить внимание, что и стандартный поиск операционной системы Windows также ничего не нашел, видимо, Google в этом все же больше преуспел.

Теперь попробуем усложнить задачу. Дело в том, что Windows ищет фразу не только в контексте файла, но и в его свойствах. Посмотрим, будет ли утилита find командной строки Windows производить поиск из описания. Я специально, по одному из каждого типа файлов (.pdf, .txt и .mf) вставлю в описание фразу «Victoria Sanremo». И так, приступим:

FIND «Victoria Sanremo» D:\TEST\*.*

В результат выполнения команды find, командная строка ничего не нашла в свойствах документов. Кроме утилиты FІND, есть еще и CMD FINDSTR, которая обладает немного большими возможностями.

Утилита FINDSTR командная строка

Утилита CMD FINDSTR предоставляется возможность осуществить поиск текста через командную строку не только в одном файле, или группе документов заданных по шаблону, но и с возможностью загрузки готового списка. И так, прежде всего, давайте посмотрим на основной синтаксис.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:файл][/C:строчка] [/G:файл] [/D:список_папок] [/A:цвета] [/OFF[LINE]] «искомые_значения»[[диск:][путь]имя_файла[ . ]]

/B – Данный ключ определяет поиск образца лишь в началах строчек.

/E — Данный ключ определяет поиск образца лишь в конце.

/R – Фразы и слова будут приниматься как регулярные выражения.

/S – Производит поиск файлов через командную строку в текущем каталоге и всех его подпапках.

/I – Данный ключ определяет, что поиск фразы из командной строки будет вестись без учета регистра.

/X – Производит вывод только тех строчек, которые содержат точное совпадение.

/V — Производит вывод только тех строчек, которые не содержат точного совпадения с искомой фразой.

/N — Производит вывод номера строчки (которые содержат точное совпадение) и ее содержимое.

/M — Производит вывод лишь имени документа, который содержит совпадение.

/O – Вывести список найденных строк через пустую строчку.

/P – Данный параметр определяет, что произойдет пропуск всех строк, которые содержат непечатаемые символы.

/OFF[LINE] — Не пропускает те документы, у которых установлен атрибут «Автономный».

/A:цвета – Шестнадцатеричный код цвета, для получения справки можете ввести команду «COLOR /?»

/F:файл – Производит чтение списка файлов из заданного документа.

/C:строчка – Использовать значение данного параметра как искомую фразу поиска.

/G:файл – Позволяет получить список строк из заданного документа.

/D:список_папок – Тут через точку с запятой мы можем задать список каталогов, в которых нужно произвести поиск через командную строку.

“искомые_значения” – Собственно, то, что мы ищем.

[диск:][путь]имя_файла — Задаем путь к документу (документам)

Что бы разделить между собой искомые фразы, между ними вставляется пробел, если параметр не содержит префикса /C. Например,

FINDSTR «Привет мир» data.txt

ищет «Привет» или «мир» в файле data.txt, а команда

FINDSTR /C:»Привет мир» data.txt

ищет фразу «Привет мир» в файле data.txt.

Регулярные выражения являются своеобразным бонусом, которым не то, что оболочка, но и язык программирования не всегда может похвастаться. При поиске из командной строки, регулярные выражения позволяют задавать собственные шаблоны (для справки по некоторым значениям введите в cmd findstr/? ), они также используются в сценариях сервера Windows Script Host, за это отвечает отдельный объект.

Спасибо за внимание. Автор блога Владимир Баталий

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Windows find product key
  • Windows filtering platform что это
  • Windows file transfer server
  • Windows file transfer for android
  • Windows file handle file