findstr

findstr i​st ein Kommandozeilenbefehl, d​er ausschließlich i​n Windows-NT-basierten Betriebssystemen verfügbar ist. Im Gegensatz z​um älteren Find, d​as bereits u​nter MS-DOS existierte, unterstützt findstr reguläre Ausdrücke u​nd bietet s​o einen ähnlichen Funktionsumfang z​um Unix-Kommando grep.

findstr k​ann entweder e​inen oder a​uch mehrere Dateien n​ach dem o​der den angegebenen regulären Ausdrücken suchen u​nd gibt d​ann für j​edes Suchergebnis d​ie komplette Zeile aus, i​n der d​er angegebene reguläre Ausdruck vorkommt.

Kritikpunkte

  • Die Angabe von Bereichen wird anders als in allen anderen Programmen mit regulären Ausdrücken interpretiert: findstr nutzt hier nicht die ASCII-Tabelle, sondern die Unicode Collation Algorithm, die eigentlich einen ganz anderen Zweck hat. Infolgedessen findet eine Suche nach dem Bereich [A-Z] nicht nur die Großbuchstaben A bis Z, sondern auch verschiedene Kombinationen mit Diakritika und auch alle Kleinbuchstaben mit Ausnahme des kleinen a, weil das kleine a vor dem großen A einsortiert wird. Ebenso findet eine Suche nach dem Bereich [0–9] nicht nur die Ziffern 0 bis 9, sondern auch die Zeichen ½, ¼ und das hochgestellte ² (nicht aber das hochgestellte ³). Infolgedessen wird von der Angabe von Bereichen in der Regel ganz abgeraten, da die Ergebnisse völlig unberechenbar sind.[1]
  • Bei manchen Parametern gibt es Probleme, wenn eine Datei unterschiedliche Dateierweiterungen im Langformat und im 8.3-Format hat (was etwa dann vorkommt, wenn die Dateierweiterung länger als drei Zeichen ist). Bei der Nutzung von Wildcards kann es dann mitunter vorkommen, dass gar keine Dateien mehr gefunden werden.[2]
  • Wird eine Datei über die Standardeingabe (findstr < datei.txt) eingelesen und hat diese Datei kein Line Feed als letztes Zeichen, hängt sich das Programm auf, sobald das Dateiende erreicht ist.[2]
  • Unter Betriebssystemen bis Windows XP kann der Suchbefehl nicht länger als 127 Zeichen sein. Ab Windows Vista beträgt die Grenze bei wörtlichen Begriffen 511 Zeichen, bei der Verwendung von regulären Ausdrücken allerdings nur 254 Zeichen.[2]
  • Unter Umständen scheitert die Suche nach mehreren wörtlichen Begriffen aus unerklärlichen Gründen, wenn diese unterschiedlich lang sind.[2]
  • Eine Suche kann nur bis zu 15 Zeichenklassen beinhalten. Werden mehr angegeben, stürzt findstr komplett ab.[2]
  • Nach bestimmten Zeichen kann nicht gesucht werden. Das Nullzeichen 0x00 darf im Suchbegriff nicht vorkommen; in einer Datei wird es ähnlich wie in der Programmiersprache C behandelt; alles, was nach diesem Zeichen kommt, gilt als neue Zeile. Aus diesem Grund unterstützt findstr auch nicht die Suche in Textdateien, die in UTF-16 oder UTF-32 kodiert sind. Ist das Zeichen 0xFF Bestandteil eines regulären Ausdrucks, hängt sich das Programm auf; dies ist aufgrund des von findstr verwendeten Kollationsalgorithmus besonders problematisch, weil dieses Zeichen zwischen dem Leerzeichen und dem Tabulatorzeichen einsortiert wird und deshalb z. B. die Angabe eines Bereichs, der diese beiden Zeichen beinhaltet, automatisch auch 0xFF beinhaltet.[2]

Einzelnachweise

  1. Why does findstr not handle case properly (in some circumstances)? - Stack Overflow
  2. What are the undocumented features and limitations of the Windows FINDSTR command? - Stack Overflow
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.