Я пытаюсь написать командный файл Windows, который будет просматривать определенный индексный файл html, который выглядит примерно так (упрощенно)
<a href=emergency.htm>Emergency Calls</a><br>
<a href=EmeRgency.htm>Emergency Calls</a><br>
<a href=Emergency.htm>Emergency Calls</a><br>
<a href=EMERGENCY.htm>Emergency Calls</a><br>
<a href=E911.htm>Emergency Calls</a><br>
<a href=e911.htm>Emergency Calls</a><br>
и распечатать все ссылки, имена файлов которых содержат заглавные буквы, чтобы их можно было исправить, чтобы они не включали их.
В unix работает следующее:
$ grep -v '^<a href=[^A-Z]*\.htm' helpindex.htm
<a href=EmeRgency.htm>Emergency Calls</a><br>
<a href=Emergency.htm>Emergency Calls</a><br>
<a href=EMERGENCY.htm>Emergency Calls</a><br>
<a href=E911.htm>Emergency Calls</a><br>
(-v отменяет совпадение)
Но используя UnxUtils grep под Windows, который является прямым портом unix grep, я не могу придумать способ цитирования регулярного выражения, которое работает. Это необходимо для использования в пакетном файле. Я пробовал ', "без радости, а также переключатель -E. Есть ли способ сделать это с помощью этого конкретного набора инструментов?
@janos привел меня к команде findstr в Windows, но она все еще не работает. Глядя на справку findstr, я вижу:
FINDSTR [/ B] [/ E] [/ L] [/ R] [/ S] [/ I] [/ X] [/ V] [/ N] [/ M] [/ O] [/ P] [ / F: файл] [/ C: строка] [/ G: файл] [/ D: список каталогов] [/ A: атрибуты цвета] [/ OFF [LINE]] строки [[диск:] [путь] имя файла [. ..]]
...
/ V Печатает только те строки, которые не содержат совпадений. ...
/ C: string Использует указанную строку как буквальную строку поиска. ...Используйте пробелы для разделения нескольких строк поиска, если аргумент не имеет префикса / C. Например, "FINDSTR" hello there "x.y" выполняет поиск "hello" или "there" в файле x.y. 'FINDSTR / C: "hello there" x.y "ищет" hello there "в файле x.y.
Однако это тоже не работает:
C:\home\sftp>findstr /V /C:"^<a href=[^A-Z]*\.htm" helpindex.htm
<a href=emergency.htm>Emergency Calls</a><br>
<a href=EmeRgency.htm>Emergency Calls</a><br>
<a href=Emergency.htm>Emergency Calls</a><br>
<a href=EMERGENCY.htm>Emergency Calls</a><br>
<a href=E911.htm>Emergency Calls</a><br>
<a href=e911.htm>Emergency Calls</a><br>
Либо findstr - это мусор, либо есть небольшое отличие от grep.
find.exe
иfindstr.exe
. Они похожи наgrep
(ничего общего с UNIXfind
) - person janos   schedule 27.09.2013"simpleterm"
. Не помню, было ли этоfind
илиfindstr
, следите за этим. - person janos   schedule 27.09.2013