FINDSTR: Line is too long

2

0

Windows FINDSTR command is useful for sifting through large amounts of data; it filters out lines of text that match or don't match a specified pattern or string (like GNU/BSD grep).

But it refuses to output lines longer than a certain length. Is there a (native) alternative, fix, or workaround?

voices

Posted 2017-11-12T17:34:09.807

Reputation: 2 053

I'm just here to express my sympathy, in your (well, our shared) grief. – Sz. – 2019-08-17T14:20:07.773

@Sz. Appreciate the solidarity, thanks. – voices – 2019-08-25T10:05:28.813

Answers

2

SS64's FINDSTR - Escapes and Length limits says:

Line Length limits

Files specified as a command line argument or via the /F:FILE option have no known line length limit. Searches were successfully run against a 128MB file that did not contain a single <LF>.

Piped data and Redirected input is limited to 8191 bytes per line. This limit is a "feature" of FINDSTR. It is not inherent to pipes or redirection. FINDSTR using redirected stdin or piped input will never match any line that is >=8k bytes. Lines >= 8k generate an error message to stderr, but ERRORLEVEL is still 0 if the search string is found in at least one line of at least one file.

Credits:
Dave Benham - List of undocumented features and limitations of FINDSTR from StackOverflow

GeroldBroser reinstates Monica

Posted 2017-11-12T17:34:09.807

Reputation: 405

1Then again, just to ensure no powerful, usable tools accidentally leak out from the "CLI utils" dungeon of Microsoft (see the hilariously scripting-unfriendly basic commands like MD, RD, DEL, COPY (or, god forbid: XCOPY), not to mention their evil daddy CMD), FINDSTR will, in this case (of not failing on normal text input), will prefix every line of the output with the current filename being processed from the list, no matter what. So, FINDSTR cannot be used as a proper filter, not even in this "partially uncripple" mode with /F. (And I'm not even an anti-MS zealot.) – Sz. – 2019-08-17T14:17:11.967

1

The better built-in alternative would be PowerShell's Select-String (or its alias sls)

The Select-String cmdlet searches for text and text patterns in input strings and files. You can use Select-String similar to grep in UNIX or findstr.exe in Windows.

Select-String

Just be aware that Select-String does a case-insensitive search by default, unlike most alternatives

phuclv

Posted 2017-11-12T17:34:09.807

Reputation: 14 930

-1

If the length is more than 255 just include option /L, it will work

findstr findstr /V /L /G:%processfolder%%previousfile% %incoming%%incomingfile%  

patrick

Posted 2017-11-12T17:34:09.807

Reputation: 1