FINDSTR: Zeile ist zu lang

2

Der Windows- FINDSTRBefehl ist nützlich, um große Datenmengen zu durchsuchen. Es filtert Textzeilen heraus, die mit einem bestimmten Muster oder einer bestimmten Zeichenfolge (wie GNU / BSD grep) übereinstimmen oder nicht übereinstimmen .

Es weigert sich jedoch, Zeilen auszugeben, die länger als eine bestimmte Länge sind. Gibt es eine (native) Alternative, eine Fehlerbehebung oder eine Problemumgehung?

tjt263
quelle
Ich bin nur hier, um mein Mitgefühl auszudrücken, in deinem (nun, unserem) gemeinsamen Kummer.
Gr.
@Sz. Schätzen Sie die Solidarität, danke.
tjt263

Antworten:

2

SS64's FINDSTR - Escapes and Length limits sagt:

Linienlängenbegrenzungen

Dateien, die als Befehlszeilenargument oder über die /F:FILEOption angegeben wurden, haben keine bekannte Zeilenlängenbeschränkung. Die Suche wurde erfolgreich für eine 128-MB-Datei ausgeführt, die kein einziges <LF> enthielt.

Piped-Daten und umgeleitete Eingaben sind auf 8191 Byte pro Zeile begrenzt. Diese Grenze ist ein "Merkmal" von FINDSTR. Es ist nicht an Pipes oder Umleitungen gebunden. FINDSTR, das umgeleitete Standard- oder Pipe-Eingaben verwendet, stimmt nie mit einer Zeile überein, die größer als 8 KB ist. Zeilen> = 8k erzeugen eine Fehlermeldung an stderr, aber ERRORLEVEL ist immer noch 0, wenn die Suchzeichenfolge in mindestens einer Zeile mindestens einer Datei gefunden wird.

Credits:
Dave Benham - Liste der undokumentierten Funktionen und Einschränkungen von FINDSTR aus StackOverflow

Gerold Broser
quelle
1
Dann wieder, nur um sicherzustellen , dass keine leistungsstarken, nutzbare Werkzeuge versehentlich von den „CLI utils“ Kerkern von Microsoft auslaufen (siehe urkomisch Scripting unfreundlichen grundlegenden Befehle wie MD, RD, DEL, COPY(oder, Gott bewahre: XCOPY), nicht ihren bösen Vater zu erwähnen CMD), FINDSTRwird in diesem Fall (ohne Fehler bei der normalen Texteingabe) jeder Zeile der Ausgabe der aktuelle Dateiname vorangestellt, der aus der Liste verarbeitet wird, egal was passiert. Daher kann FINDSTR nicht als richtiger Filter verwendet werden, auch nicht in diesem Modus, in dem die Verkrüppelung teilweise aufgehoben ist /F. (Und ich bin nicht einmal ein Anti-MS-Fanatiker.)
Gr.
1

Die besser eingebaute Alternative wäre PowerShells Select-String (oder dessen Alias sls)

Das Select-StringCmdlet sucht nach Text und Textmustern in Eingabezeichenfolgen und -dateien. Sie können Select-Stringähnlich wie grepin UNIX oder findstr.exein Windows verwenden.

Select-String

Beachten Sie jedoch, dass Select-Stringbei der Suche standardmäßig die Groß- und Kleinschreibung nicht berücksichtigt wird, im Gegensatz zu den meisten Alternativen

phuclv
quelle