grep in windows-batch-Datei

Ich bin beim schreiben einer Windows-batch-Datei, die sich durch eine bestimmte html-index-Datei, die sieht ungefähr so aus (vereinfacht)

<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>

und drucken Sie alle links, deren Dateinamen enthalten keine Großbuchstaben, so dass Sie behoben werden können, nicht zu, so gehören alle.

Folgende Werke in 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 kehrt match)

Aber mit den UnxUtils grep unter Windows, die eine direkte Portierung von unix grep, ich kann nicht kommen mit einem Weg, zu zitieren, der regex funktioniert. Dies wäre notwendig, um es in eine batch-Datei. Ich 've tried", " mit keine Freude, und auch die-E wechseln. Gibt es eine Möglichkeit, dies zu tun mit dieser besonderen toolset?

@janos führte mich zu der findstr-Befehl in Windows, aber es funktioniert immer noch nicht. Blick auf die findstr helfen, ich sehe:

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
[/F:Datei]
[/C:Zeichenfolge] [/G:Datei] [/D:Verzeichnisliste] [/A:Farbattribute] [/OFF[LINE]]
Zeichenfolgen [[Laufwerk:][Pfad]Dateiname[ ...]]

...
/V gibt nur Zeilen, die keine Entsprechung.
...
/C:Zeichenfolge Verwendet angegebenen string als literal Suchbegriff. ...

Verwenden Sie Leerzeichen trennen Sie mehrere Suchbegriffe, es sei denn, das argument ist
das Präfix /C Zum Beispiel 'FINDSTR "Hallo" x".y' sucht
für "Hallo" oder "dort" in Datei x.y. 'FINDSTR /C:"Hallo" x".y'
sucht nach "Hallo" im Datei-x -.y.

Aber das funktioniert nicht, entweder:

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>

Entweder findstr ist Müll oder es gibt einige subtile Unterschied von grep.

Dies funktioniert für mich in der version, die kommt mit Git Bash. Sie könnten auch versuchen, die native windows-Befehle find.exe und findstr.exe. Sie sind ähnlich wie grep (nichts zu tun mit dem UNIX -find)
finden Sie nicht regex? Ich wusste nicht, dass.
findstr sieht aus wie es sollte funktionieren, aber es funktioniert nicht : findstr /V '^<a href=[^A-Z]*\.htm' helpindex.htm produziert mp Ergebnisse, nicht die vier Linien, die uniz grep funktioniert.
Ich habe kein windows um es zu testen, aber eine von Ihnen muss die Muster sind eingeschlossen in doppelte Anführungszeichen, auch wenn es unnötig ist, wie "simpleterm". Ich kann mich nicht erinnern, wenn es war find oder findstr, sehen Sie sich unsere für.

InformationsquelleAutor Steve Cohen | 2013-09-27

Schreibe einen Kommentar